summaryrefslogtreecommitdiff
path: root/vm_insnhelper.c
diff options
context:
space:
mode:
authorTakashi Kokubun <takashikkbn@gmail.com>2024-02-20 13:42:29 -0800
committerGitHub <noreply@github.com>2024-02-20 13:42:29 -0800
commit9216a2ac43a6e8a22efad582c4460c51cab72674 (patch)
treee23399ee09dcd72fd1b611ec78afd391d4a05c61 /vm_insnhelper.c
parentd4b4b53bc02c7bc12f3cba75c8390a8ab27e9306 (diff)
YJIT: Verify the assumption of leaf C calls (#10002)
Diffstat (limited to 'vm_insnhelper.c')
-rw-r--r--vm_insnhelper.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/vm_insnhelper.c b/vm_insnhelper.c
index aef71970f6..63a88aea00 100644
--- a/vm_insnhelper.c
+++ b/vm_insnhelper.c
@@ -337,6 +337,17 @@ vm_push_frame_debug_counter_inc(
#define vm_push_frame_debug_counter_inc(ec, cfp, t) /* void */
#endif
+// Return a poison value to be set above the stack top to verify leafness.
+VALUE
+rb_vm_stack_canary(void)
+{
+#if VM_CHECK_MODE > 0
+ return vm_stack_canary;
+#else
+ return 0;
+#endif
+}
+
STATIC_ASSERT(VM_ENV_DATA_INDEX_ME_CREF, VM_ENV_DATA_INDEX_ME_CREF == -2);
STATIC_ASSERT(VM_ENV_DATA_INDEX_SPECVAL, VM_ENV_DATA_INDEX_SPECVAL == -1);
STATIC_ASSERT(VM_ENV_DATA_INDEX_FLAGS, VM_ENV_DATA_INDEX_FLAGS == -0);