aboutsummaryrefslogtreecommitdiffstats
path: root/clox/src/memory.c
diff options
context:
space:
mode:
Diffstat (limited to 'clox/src/memory.c')
-rw-r--r--clox/src/memory.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/clox/src/memory.c b/clox/src/memory.c
index 13891e4..b93b6d6 100644
--- a/clox/src/memory.c
+++ b/clox/src/memory.c
@@ -76,6 +76,11 @@ static void blackenObject(Obj *object) {
printf("\n");
#endif
switch (object->type) {
+ case OBJ_BOUND_METHOD: {
+ ObjBoundMethod *bound = (ObjBoundMethod *)object;
+ markValue(bound->receiver);
+ markObject((Obj *)bound->method);
+ }
case OBJ_CLASS: {
ObjClass *klass = (ObjClass *)object;
markObject((Obj *)klass->name);
@@ -117,6 +122,9 @@ static void freeObject(Obj *object) {
#endif // DEBUG_LOG_GC
switch (object->type) {
+ case OBJ_BOUND_METHOD:
+ FREE(ObjBoundMethod, object);
+ break;
case OBJ_CLASS: {
ObjClass *klass = (ObjClass *)object;
freeTable(&klass->methods);