summaryrefslogtreecommitdiff
path: root/vm_insnhelper.c
diff options
context:
space:
mode:
Diffstat (limited to 'vm_insnhelper.c')
-rw-r--r--vm_insnhelper.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/vm_insnhelper.c b/vm_insnhelper.c
index 29e6545398..54940ea2e3 100644
--- a/vm_insnhelper.c
+++ b/vm_insnhelper.c
@@ -214,6 +214,21 @@ vm_push_frame(rb_execution_context_t *ec,
rb_control_frame_t *const cfp = ec->cfp - 1;
int i;
+#if USE_DEBUG_COUNTER
+ RB_DEBUG_COUNTER_INC(frame_push);
+ switch (type & VM_FRAME_MAGIC_MASK) {
+ case VM_FRAME_MAGIC_METHOD: RB_DEBUG_COUNTER_INC(frame_push_method); break;
+ case VM_FRAME_MAGIC_BLOCK: RB_DEBUG_COUNTER_INC(frame_push_block); break;
+ case VM_FRAME_MAGIC_CLASS: RB_DEBUG_COUNTER_INC(frame_push_class); break;
+ case VM_FRAME_MAGIC_TOP: RB_DEBUG_COUNTER_INC(frame_push_top); break;
+ case VM_FRAME_MAGIC_CFUNC: RB_DEBUG_COUNTER_INC(frame_push_cfunc); break;
+ case VM_FRAME_MAGIC_IFUNC: RB_DEBUG_COUNTER_INC(frame_push_ifunc); break;
+ case VM_FRAME_MAGIC_EVAL: RB_DEBUG_COUNTER_INC(frame_push_eval); break;
+ case VM_FRAME_MAGIC_RESCUE: RB_DEBUG_COUNTER_INC(frame_push_rescue); break;
+ case VM_FRAME_MAGIC_DUMMY: RB_DEBUG_COUNTER_INC(frame_push_dummy); break;
+ default: rb_bug("unreachable");
+ }
+#endif
vm_check_frame(type, specval, cref_or_me, iseq);
VM_ASSERT(local_size >= 0);