summaryrefslogtreecommitdiff
path: root/vm_core.h
diff options
context:
space:
mode:
Diffstat (limited to 'vm_core.h')
-rw-r--r--vm_core.h8
1 files changed, 7 insertions, 1 deletions
diff --git a/vm_core.h b/vm_core.h
index cd7bf74b5d..12c3ac3775 100644
--- a/vm_core.h
+++ b/vm_core.h
@@ -763,7 +763,7 @@ typedef struct rb_control_frame_struct {
const rb_iseq_t *iseq; /* cfp[2] */
VALUE self; /* cfp[3] / block[0] */
const VALUE *ep; /* cfp[4] / block[1] */
- const void *block_code; /* cfp[5] / block[2] */ /* iseq or ifunc */
+ const void *block_code; /* cfp[5] / block[2] */ /* iseq or ifunc or forwarded block handler */
VALUE *__bp__; /* cfp[6] */ /* outside vm_push_frame, use vm_base_ptr instead. */
#if VM_DEBUG_BP_CHECK
@@ -1494,6 +1494,12 @@ vm_block_handler_verify(MAYBE_UNUSED(VALUE block_handler))
(vm_block_handler_type(block_handler), 1));
}
+static inline int
+vm_cfp_forwarded_bh_p(const rb_control_frame_t *cfp, VALUE block_handler)
+{
+ return ((VALUE) cfp->block_code) == block_handler;
+}
+
static inline enum rb_block_type
vm_block_type(const struct rb_block *block)
{