minor refactoring and typos

This commit is contained in:
CPunch 2023-05-25 19:40:15 -05:00 committed by cpunch
parent d1a16d990c
commit 3b13ae1624
6 changed files with 8 additions and 12 deletions

View File

@ -705,7 +705,7 @@ void printObject(CObj *o)
switch (o->type) {
case COBJ_STRING: {
CObjString *objStr = (CObjString *)o;
printf("%.*s", objStr->length, objStr->str);
printf("<string> \"%.*s\"", objStr->length, objStr->str);
break;
}
case COBJ_OBJECT: {

View File

@ -41,7 +41,7 @@ struct CObj
struct CObjString
{
CommonHeader; // "is a" CObj
char *str; // NULL termincated string
char *str; // NULL terminated string
uint32_t hash; // for hashtable lookup
int length;
bool isIString;
@ -138,6 +138,7 @@ struct CObjUpval
#define cosmoV_readClosure(x) ((CObjClosure *)cosmoV_readRef(x))
#define cosmoO_readCString(x) ((CObjString *)x)->str
#define cosmoO_readType(x) ((CObj *)x)->type
static inline bool isObjType(CValue val, CObjType type)
{

View File

@ -59,10 +59,10 @@ typedef struct CCompilerState
typedef struct
{
CState *state;
CLexState *lex;
CCompilerState *compiler;
CObjString *module; // name of the module
CState *state;
CToken current;
CToken previous; // token right after the current token
bool hadError;

View File

@ -59,9 +59,9 @@ struct CState
CValue *top; // top of the stack
CObjObject *protoObjects[COBJ_MAX]; // proto object for each COBJ type [NULL = no default proto]
CObjString *iStrings[ISTRING_MAX]; // strings used internally by the VM, eg. __init, __index
CCallFrame callFrame[FRAME_MAX]; // call frames
CValue stack[STACK_MAX]; // stack
CObjString *iStrings[ISTRING_MAX]; // strings used internally by the VM, eg. __init, __index
CCallFrame callFrame[FRAME_MAX]; // call frames
CValue stack[STACK_MAX]; // stack
};
COSMO_API CState *cosmoV_newState();

View File

@ -123,7 +123,6 @@ void printValue(CValue val);
COSMO_API bool cosmoV_equal(CState *state, CValue valA, CValue valB);
COSMO_API CObjString *cosmoV_toString(CState *state, CValue val);
COSMO_API cosmo_Number cosmoV_toNumber(CState *state, CValue val);
COSMO_API const char *
cosmoV_typeStr(CValue val); // return constant char array for corresponding type
COSMO_API const char *cosmoV_typeStr(CValue val);
#endif

View File

@ -229,11 +229,7 @@ static bool callCFunction(CState *state, CosmoCFunction cfunc, int args, int nre
{
StkPtr savedBase = cosmoV_getTop(state, args);
// we don't want a GC event during c api because we don't actually trust the user to know how to
// evade the GC
cosmoM_freezeGC(state);
int nres = cfunc(state, args, savedBase + 1);
cosmoM_unfreezeGC(state);
// caller function wasn't expecting this many return values, cap it
if (nres > nresults)