mirror of
https://github.com/CPunch/Cosmo.git
synced 2024-11-23 15:50:09 +00:00
cdebug: added cosmoG_disassemble
for now cosmo will disassemble each script before running
This commit is contained in:
parent
cd37cfdae5
commit
5cd3049d66
1
main.c
1
main.c
@ -50,6 +50,7 @@ static bool interpret(CState *state, const char *script, const char *mod)
|
||||
|
||||
// cosmoV_compileString pushes the result onto the stack (COBJ_ERROR or COBJ_CLOSURE)
|
||||
if (cosmoV_compileString(state, script, mod)) {
|
||||
cosmoG_disassemble(cosmoV_readClosure(*cosmoV_getTop(state, 0)));
|
||||
if (!cosmoV_pcall(state, 0, 1)) {
|
||||
cosmoV_printBacktrace(state, cosmoV_readError(*cosmoV_pop(state)));
|
||||
return false;
|
||||
|
@ -223,3 +223,8 @@ int disasmInstr(CChunk *chunk, int offset, int indent)
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
void cosmoG_disassemble(CObjClosure *closure)
|
||||
{
|
||||
disasmChunk(&closure->function->chunk, closure->function->name == NULL ? UNNAMEDCHUNK : closure->function->name->str, 0);
|
||||
}
|
@ -2,10 +2,13 @@
|
||||
#define CDEBUG_H
|
||||
|
||||
#include "cchunk.h"
|
||||
#include "cobj.h"
|
||||
|
||||
COSMO_API void disasmChunk(CChunk *chunk, const char *name, int indent);
|
||||
COSMO_API int disasmInstr(CChunk *chunk, int offset, int indent);
|
||||
|
||||
void printIndent(int indent);
|
||||
|
||||
COSMO_API void cosmoG_disassemble(CObjClosure *closure);
|
||||
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user