add some debug prints
This commit is contained in:
parent
ff61f8c0f5
commit
346b159e7e
|
@ -709,6 +709,7 @@ print_irep(pic_state *pic, struct pic_irep *irep)
|
||||||
printf("## irep %p\n", irep);
|
printf("## irep %p\n", irep);
|
||||||
printf("[clen = %zd, ccapa = %zd, argc = %d, localc = %d]\n", irep->clen, irep->ccapa, irep->argc, irep->localc);
|
printf("[clen = %zd, ccapa = %zd, argc = %d, localc = %d]\n", irep->clen, irep->ccapa, irep->argc, irep->localc);
|
||||||
for (i = 0; i < irep->clen; ++i) {
|
for (i = 0; i < irep->clen; ++i) {
|
||||||
|
printf("[%2d] ", irep->code[i].insn);
|
||||||
switch (irep->code[i].insn) {
|
switch (irep->code[i].insn) {
|
||||||
case OP_POP:
|
case OP_POP:
|
||||||
puts("OP_POP");
|
puts("OP_POP");
|
||||||
|
|
15
src/expand.c
15
src/expand.c
|
@ -44,6 +44,12 @@ expand(pic_state *pic, pic_value obj, struct syntactic_env *env)
|
||||||
{
|
{
|
||||||
int ai = pic_gc_arena_preserve(pic);
|
int ai = pic_gc_arena_preserve(pic);
|
||||||
|
|
||||||
|
#if DEBUG
|
||||||
|
printf("expanding...");
|
||||||
|
pic_debug(pic, obj);
|
||||||
|
puts("");
|
||||||
|
#endif
|
||||||
|
|
||||||
switch (pic_type(obj)) {
|
switch (pic_type(obj)) {
|
||||||
case PIC_TT_SYMBOL: {
|
case PIC_TT_SYMBOL: {
|
||||||
return obj;
|
return obj;
|
||||||
|
@ -147,14 +153,21 @@ pic_expand(pic_state *pic, pic_value obj)
|
||||||
|
|
||||||
env.tbl = pic->global_tbl;
|
env.tbl = pic->global_tbl;
|
||||||
|
|
||||||
|
#if DEBUG
|
||||||
|
puts("before expand:");
|
||||||
|
pic_debug(pic, obj);
|
||||||
|
puts("");
|
||||||
|
#endif
|
||||||
|
|
||||||
v = expand(pic, obj, &env);
|
v = expand(pic, obj, &env);
|
||||||
|
|
||||||
pic_gc_arena_restore(pic, ai);
|
pic_gc_arena_restore(pic, ai);
|
||||||
pic_gc_protect(pic, v);
|
pic_gc_protect(pic, v);
|
||||||
|
|
||||||
#if DEBUG
|
#if DEBUG
|
||||||
puts("expanded:");
|
puts("after expand:");
|
||||||
pic_debug(pic, v);
|
pic_debug(pic, v);
|
||||||
|
puts("");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
return v;
|
return v;
|
||||||
|
|
21
src/vm.c
21
src/vm.c
|
@ -157,9 +157,15 @@ pic_get_args(pic_state *pic, const char *format, ...)
|
||||||
return i;
|
return i;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if VM_DEBUG
|
||||||
|
# define OPCODE_EXEC_HOOK printf("OP = %d\n", c.insn)
|
||||||
|
#else
|
||||||
|
# define OPCODE_EXEC_HOOK ((void)0)
|
||||||
|
#endif
|
||||||
|
|
||||||
#if PIC_DIRECT_THREADED_VM
|
#if PIC_DIRECT_THREADED_VM
|
||||||
# define VM_LOOP JUMP;
|
# define VM_LOOP JUMP;
|
||||||
# define CASE(x) L_##x:
|
# define CASE(x) L_##x: OPCODE_EXEC_HOOK;
|
||||||
# define NEXT c = *++pc; JUMP;
|
# define NEXT c = *++pc; JUMP;
|
||||||
# define JUMP c = *pc; goto *oplabels[pc->insn];
|
# define JUMP c = *pc; goto *oplabels[pc->insn];
|
||||||
# define VM_LOOP_END
|
# define VM_LOOP_END
|
||||||
|
@ -207,6 +213,19 @@ pic_apply(pic_state *pic, struct pic_proc *proc, pic_value argv)
|
||||||
|
|
||||||
argc = pic_length(pic, argv) + 1;
|
argc = pic_length(pic, argv) + 1;
|
||||||
|
|
||||||
|
#if VM_DEBUG
|
||||||
|
puts("== booting VM...");
|
||||||
|
printf(" proc = ");
|
||||||
|
pic_debug(pic, pic_obj_value(proc));
|
||||||
|
puts("");
|
||||||
|
printf(" argv = ");
|
||||||
|
pic_debug(pic, argv);
|
||||||
|
puts("");
|
||||||
|
printf(" irep = ");
|
||||||
|
print_irep(pic, proc->u.irep);
|
||||||
|
puts("\nLet's go!");
|
||||||
|
#endif
|
||||||
|
|
||||||
PUSH(pic_obj_value(proc));
|
PUSH(pic_obj_value(proc));
|
||||||
for (i = 1; i < argc; ++i) {
|
for (i = 1; i < argc; ++i) {
|
||||||
PUSH(pic_car(pic, argv));
|
PUSH(pic_car(pic, argv));
|
||||||
|
|
Loading…
Reference in New Issue