From 2da11dc7f535031a721360921aa050d0b7ea2927 Mon Sep 17 00:00:00 2001 From: Alex Shinn Date: Wed, 13 Jul 2011 23:02:17 +0900 Subject: [PATCH] updating disasm for new SEXP_MAKE_PROCEDURE_OP --- lib/chibi/disasm.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/lib/chibi/disasm.c b/lib/chibi/disasm.c index ea2c2f8f..94dbfec7 100644 --- a/lib/chibi/disasm.c +++ b/lib/chibi/disasm.c @@ -86,7 +86,7 @@ static sexp disasm (sexp ctx, sexp self, sexp bc, sexp out, int depth) { case SEXP_OP_FCALL3: case SEXP_OP_FCALL4: sexp_write_pointer(ctx, ((sexp*)ip)[0], out); - sexp_write_string(ctx, ": ", out); + sexp_write_char(ctx, '\n', out); sexp_write_string(ctx, sexp_opcode_name(((sexp*)ip)[0]), out); ip += sizeof(sexp); break; @@ -95,6 +95,13 @@ static sexp disasm (sexp ctx, sexp self, sexp bc, sexp out, int depth) { case SEXP_OP_MAKE: ip += sizeof(sexp)*2; break; + case SEXP_OP_MAKE_PROCEDURE: + sexp_write_integer(ctx, ((sexp_sint_t*)ip)[0], out); + sexp_write_string(ctx, " ", out); + sexp_write_integer(ctx, ((sexp_sint_t*)ip)[1], out); + tmp = ((sexp*)ip)[2]; + ip += sizeof(sexp)*3; + break; case SEXP_OP_GLOBAL_REF: case SEXP_OP_GLOBAL_KNOWN_REF: case SEXP_OP_PARAMETER_REF: @@ -116,7 +123,8 @@ static sexp disasm (sexp ctx, sexp self, sexp bc, sexp out, int depth) { break; } sexp_write_char(ctx, '\n', out); - if ((opcode == SEXP_OP_PUSH) && (depth < SEXP_DISASM_MAX_DEPTH) + if ((opcode == SEXP_OP_PUSH || opcode == SEXP_OP_MAKE_PROCEDURE) + && (depth < SEXP_DISASM_MAX_DEPTH) && tmp && (sexp_bytecodep(tmp) || sexp_procedurep(tmp))) disasm(ctx, self, tmp, out, depth+1); if (ip - sexp_bytecode_data(bc) < sexp_bytecode_length(bc))