mirror of
https://github.com/CPunch/Cosmo.git
synced 2025-10-15 05:30:09 +00:00
Major refactoring, added classes, many bug fixes
This commit is contained in:
11
src/cmem.c
11
src/cmem.c
@@ -85,7 +85,9 @@ void blackenObject(CState *state, CObj *obj) {
|
||||
break;
|
||||
case COBJ_OBJECT: {
|
||||
// mark everything this object is keeping track of
|
||||
markTable(state, &((CObjObject*)obj)->tbl);
|
||||
CObjObject *cobj = (CObjObject*)obj;
|
||||
markTable(state, &cobj->tbl);
|
||||
markObject(state, (CObj*)cobj->meta);
|
||||
break;
|
||||
}
|
||||
case COBJ_UPVALUE: {
|
||||
@@ -99,6 +101,12 @@ void blackenObject(CState *state, CObj *obj) {
|
||||
|
||||
break;
|
||||
}
|
||||
case COBJ_METHOD: {
|
||||
CObjMethod *method = (CObjMethod*)obj;
|
||||
markObject(state, (CObj*)method->closure);
|
||||
markObject(state, (CObj*)method->obj);
|
||||
break;
|
||||
}
|
||||
case COBJ_CLOSURE: {
|
||||
CObjClosure *closure = (CObjClosure*)obj;
|
||||
markObject(state, (CObj*)closure->function);
|
||||
@@ -200,6 +208,7 @@ void markRoots(CState *state) {
|
||||
}
|
||||
|
||||
markTable(state, &state->globals);
|
||||
markObject(state, (CObj*)state->initString);
|
||||
|
||||
traceGrays(state);
|
||||
}
|
||||
|
Reference in New Issue
Block a user