diff --git a/source/toy_value.h b/source/toy_value.h index 41c847f..b71cfbb 100644 --- a/source/toy_value.h +++ b/source/toy_value.h @@ -51,7 +51,7 @@ typedef struct Toy_Value { //32 | 64 BITNESS #define TOY_VALUE_IS_ARRAY(value) ((value).type == TOY_VALUE_ARRAY || (TOY_VALUE_IS_REFERENCE(value) && Toy_unwrapValue(value).type == TOY_VALUE_ARRAY)) #define TOY_VALUE_IS_TABLE(value) ((value).type == TOY_VALUE_TABLE || (TOY_VALUE_IS_REFERENCE(value) && Toy_unwrapValue(value).type == TOY_VALUE_TABLE)) #define TOY_VALUE_IS_FUNCTION(value) ((value).type == TOY_VALUE_FUNCTION || (TOY_VALUE_IS_REFERENCE(value) && Toy_unwrapValue(value).type == TOY_VALUE_FUNCTION)) -#define TOY_VALUE_IS_OPAQUE(value) ((value).type == TOY_VALUE_OPAQUE) +#define TOY_VALUE_IS_OPAQUE(value) ((value).type == TOY_VALUE_OPAQUE || (TOY_VALUE_IS_REFERENCE(value) && Toy_unwrapValue(value).type == TOY_VALUE_OPAQUE)) #define TOY_VALUE_IS_REFERENCE(value) ((value).type == TOY_VALUE_REFERENCE) #define TOY_VALUE_AS_BOOLEAN(value) ((value).as.boolean) diff --git a/source/toy_vm.c b/source/toy_vm.c index 97d3819..282b8f9 100644 --- a/source/toy_vm.c +++ b/source/toy_vm.c @@ -1099,12 +1099,12 @@ void Toy_resetVM(Toy_VM* vm, bool preserveScope, bool preserveStack) { } if (!preserveStack) { - Toy_resetStack(&vm->stack); //NOTE: has a realloc() + Toy_resetStack(&vm->stack); //WARN: has a realloc() } //not sure how often to call teh GC if (vm->memoryBucket) { - Toy_collectBucketGarbage(&vm->memoryBucket); //TODO: call GC after a certain number of bucket links allocated + Toy_collectBucketGarbage(&vm->memoryBucket); //URGENT: call GC after a certain number of bucket links allocated } } @@ -1190,8 +1190,8 @@ void Toy_freeVM(Toy_VM* vm) { } Toy_Array* Toy_extractResultsFromVM(Toy_VM* parentVM, Toy_VM* subVM, unsigned int resultCount) { - if (subVM->stack->count < resultCount) { - fprintf(stderr, TOY_CC_ERROR "ERROR: Too many results requested from VM, exiting\n" TOY_CC_RESET); + if (subVM->stack->count != resultCount) { + fprintf(stderr, TOY_CC_ERROR "ERROR: Too %s results requested from VM, exiting\n" TOY_CC_RESET, subVM->stack->count < resultCount ? "many":"few"); exit(-1); }