mirror of
https://github.com/CPunch/Cosmo.git
synced 2024-11-21 15:00:06 +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)
|
// cosmoV_compileString pushes the result onto the stack (COBJ_ERROR or COBJ_CLOSURE)
|
||||||
if (cosmoV_compileString(state, script, mod)) {
|
if (cosmoV_compileString(state, script, mod)) {
|
||||||
|
cosmoG_disassemble(cosmoV_readClosure(*cosmoV_getTop(state, 0)));
|
||||||
if (!cosmoV_pcall(state, 0, 1)) {
|
if (!cosmoV_pcall(state, 0, 1)) {
|
||||||
cosmoV_printBacktrace(state, cosmoV_readError(*cosmoV_pop(state)));
|
cosmoV_printBacktrace(state, cosmoV_readError(*cosmoV_pop(state)));
|
||||||
return false;
|
return false;
|
||||||
|
@ -223,3 +223,8 @@ int disasmInstr(CChunk *chunk, int offset, int indent)
|
|||||||
|
|
||||||
return 1;
|
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
|
#define CDEBUG_H
|
||||||
|
|
||||||
#include "cchunk.h"
|
#include "cchunk.h"
|
||||||
|
#include "cobj.h"
|
||||||
|
|
||||||
COSMO_API void disasmChunk(CChunk *chunk, const char *name, int indent);
|
COSMO_API void disasmChunk(CChunk *chunk, const char *name, int indent);
|
||||||
COSMO_API int disasmInstr(CChunk *chunk, int offset, int indent);
|
COSMO_API int disasmInstr(CChunk *chunk, int offset, int indent);
|
||||||
|
|
||||||
void printIndent(int indent);
|
void printIndent(int indent);
|
||||||
|
|
||||||
|
COSMO_API void cosmoG_disassemble(CObjClosure *closure);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user