Compare commits

..

No commits in common. "1d2ba217afe144c9e2fc67279001f05e69ae4ef6" and "9c5270124d4ebf098d255cdeb94d1ff405a4398d" have entirely different histories.

3 changed files with 14 additions and 16 deletions

View File

@ -10,9 +10,7 @@
// realloc wrapper // realloc wrapper
void *cosmoM_reallocate(CState *state, void *buf, size_t oldSize, size_t newSize) void *cosmoM_reallocate(CState *state, void *buf, size_t oldSize, size_t newSize)
{ {
if (buf == NULL) if (buf == NULL) oldSize = 0;
oldSize = 0;
#ifdef GC_DEBUG #ifdef GC_DEBUG
printf("old allocated bytes: %ld\n", state->allocatedBytes); printf("old allocated bytes: %ld\n", state->allocatedBytes);
if (buf) { if (buf) {

View File

@ -188,10 +188,10 @@ CObjObject *cosmoO_newObject(CState *state)
obj->userP = NULL; // reserved for C API obj->userP = NULL; // reserved for C API
obj->userT = 0; obj->userT = 0;
obj->isLocked = false; obj->isLocked = false;
cosmoV_pushRef(state, (CObj *)obj); // so our GC can keep track of it cosmoV_pushRef(state, (CObj *)obj); // so our GC can keep track of it
cosmoT_initTable(state, &obj->tbl, ARRAY_START); cosmoT_initTable(state, &obj->tbl, ARRAY_START);
cosmoV_pop(state); cosmoV_pop(state);
return obj; return obj;
} }
@ -698,61 +698,60 @@ int cosmoO_count(CState *state, CObj *obj)
void printObject(CObj *o) void printObject(CObj *o)
{ {
printf("%s ", cosmoO_typeStr(o));
switch (o->type) { switch (o->type) {
case COBJ_STRING: { case COBJ_STRING: {
CObjString *objStr = (CObjString *)o; CObjString *objStr = (CObjString *)o;
printf("\"%.*s\"", objStr->length, objStr->str); printf("<string> \"%.*s\"", objStr->length, objStr->str);
break; break;
} }
case COBJ_OBJECT: { case COBJ_OBJECT: {
printf("%p", (void *)o); printf("<obj> %p", (void *)o);
break; break;
} }
case COBJ_TABLE: { case COBJ_TABLE: {
CObjTable *tbl = (CObjTable *)o; CObjTable *tbl = (CObjTable *)o;
printf("%p", (void *)tbl); printf("<tbl> %p", (void *)tbl);
break; break;
} }
case COBJ_FUNCTION: { case COBJ_FUNCTION: {
CObjFunction *objFunc = (CObjFunction *)o; CObjFunction *objFunc = (CObjFunction *)o;
if (objFunc->name != NULL) if (objFunc->name != NULL)
printf("%.*s", objFunc->name->length, objFunc->name->str); printf("<function> %.*s", objFunc->name->length, objFunc->name->str);
else else
printf("%s", UNNAMEDCHUNK); printf("<function> %s", UNNAMEDCHUNK);
break; break;
} }
case COBJ_CFUNCTION: { case COBJ_CFUNCTION: {
CObjCFunction *objCFunc = (CObjCFunction *)o; CObjCFunction *objCFunc = (CObjCFunction *)o;
printf("%p", (void *)objCFunc->cfunc); printf("<c function> %p", (void *)objCFunc->cfunc);
break; break;
} }
case COBJ_ERROR: { case COBJ_ERROR: {
CObjError *err = (CObjError *)o; CObjError *err = (CObjError *)o;
printf("%p -> ", (void *)o); printf("<error> %p -> ", (void *)o);
printValue(err->err); printValue(err->err);
break; break;
} }
case COBJ_METHOD: { case COBJ_METHOD: {
CObjMethod *method = (CObjMethod *)o; CObjMethod *method = (CObjMethod *)o;
printf("%p -> ", (void *)method); printf("<method> %p -> ", (void *)method);
printValue(method->func); printValue(method->func);
break; break;
} }
case COBJ_CLOSURE: { case COBJ_CLOSURE: {
CObjClosure *closure = (CObjClosure *)o; CObjClosure *closure = (CObjClosure *)o;
printf("%p -> ", (void *)closure); printf("<closure> %p -> ", (void *)closure);
printObject((CObj *)closure->function); // just print the function printObject((CObj *)closure->function); // just print the function
break; break;
} }
case COBJ_UPVALUE: { case COBJ_UPVALUE: {
CObjUpval *upval = (CObjUpval *)o; CObjUpval *upval = (CObjUpval *)o;
printf("%p -> ", (void *)upval->val); printf("<upvalue> %p -> ", (void *)upval->val);
printValue(*upval->val); printValue(*upval->val);
break; break;
} }
default: default:
printf("%p", (void *)o); printf("<unkn obj %p>", (void *)o);
} }
} }

View File

@ -764,6 +764,7 @@ int cosmoV_execute(CState *state)
{ {
uint8_t indx = READBYTE(frame); uint8_t indx = READBYTE(frame);
cosmoV_pushValue(state, frame->base[indx]); cosmoV_pushValue(state, frame->base[indx]);
continue;
} }
CASE(OP_GETUPVAL) : CASE(OP_GETUPVAL) :
{ {