aboutsummaryrefslogtreecommitdiffstats
path: root/clox/src/memory.c
diff options
context:
space:
mode:
authorGravatar Tom Willemse2022-08-13 14:20:54 -0700
committerGravatar Tom Willemse2022-08-13 14:20:54 -0700
commitac0f95683ff94d20114c46b365088910dd60fdda (patch)
tree13ccfc37c660f106d896ec554bb724cc4f2ff178 /clox/src/memory.c
parent07f691425c95a53323229accd8a907c5dea7e530 (diff)
downloadcrafting-interpreters-ac0f95683ff94d20114c46b365088910dd60fdda.tar.gz
crafting-interpreters-ac0f95683ff94d20114c46b365088910dd60fdda.zip
Chapter 28.2
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);