From e0e5aebc66833dfe55b362678032f7e0e4a265d7 Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Thu, 23 Jan 2014 15:08:38 +0900 Subject: add callback invocation from OP_DEBUG --- include/mruby.h | 1 + src/vm.c | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/include/mruby.h b/include/mruby.h index e92550213..3a08afde2 100644 --- a/include/mruby.h +++ b/include/mruby.h @@ -156,6 +156,7 @@ typedef struct mrb_state { #ifdef ENABLE_DEBUG void (*code_fetch_hook)(struct mrb_state* mrb, struct mrb_irep *irep, mrb_code *pc, mrb_value *regs); + void (*debug_op_hook)(struct mrb_state* mrb, struct mrb_irep *irep, mrb_code *pc, mrb_value *regs); #endif struct RClass *eException_class; diff --git a/src/vm.c b/src/vm.c index a12763b33..c044d5af1 100644 --- a/src/vm.c +++ b/src/vm.c @@ -2113,10 +2113,14 @@ mrb_context_run(mrb_state *mrb, struct RProc *proc, mrb_value self, unsigned int CASE(OP_DEBUG) { /* A debug print R(A),R(B),R(C) */ +#ifdef ENABLE_DEBUG + mrb->debug_op_hook(mrb, irep, pc, regs); +#else #ifdef ENABLE_STDIO printf("OP_DEBUG %d %d %d\n", GETARG_A(i), GETARG_B(i), GETARG_C(i)); #else abort(); +#endif #endif NEXT; } -- cgit v1.2.3