Major refactoring, added classes, many bug fixes

This commit is contained in:
2020-11-09 19:44:12 -06:00
parent aa975b7330
commit c42a72dfad
21 changed files with 353 additions and 194 deletions

View File

@@ -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);
}