summaryrefslogtreecommitdiff
path: root/vm_core.h
diff options
context:
space:
mode:
authorAlan Wu <XrXr@users.noreply.github.com>2021-10-18 11:30:18 -0400
committerAlan Wu <XrXr@users.noreply.github.com>2021-10-20 18:19:43 -0400
commit5906a5a7329e34a43dc46d4fc3cdf1b04cc13d0a (patch)
tree736536624015891bf6c7dceb5e1ba49362f36385 /vm_core.h
parent1e23b1a6c2614c8e3a1be0be4df6dee9202701d5 (diff)
Add comments about special runtime routines YJIT calls
When YJIT make calls to routines without reconstructing interpreter state through jit_prepare_routine_call(), it relies on the routine to never allocate, raise, and push/pop control frames. Comment about this on the routines that YJTI calls. This is probably something we should dynamically verify on debug builds. It's hard to statically verify this as it requires verifying all functions in the call tree. Maybe something to look at in the future.
Diffstat (limited to 'vm_core.h')
-rw-r--r--vm_core.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/vm_core.h b/vm_core.h
index 79aa22d3de..11af8a365d 100644
--- a/vm_core.h
+++ b/vm_core.h
@@ -446,6 +446,8 @@ struct rb_iseq_constant_body {
char catch_except_p; /* If a frame of this ISeq may catch exception, set TRUE */
// If true, this ISeq is leaf *and* backtraces are not used, for example,
// by rb_profile_frames. We verify only leafness on VM_CHECK_MODE though.
+ // Note that GC allocations might use backtraces due to
+ // ObjectSpace#trace_object_allocations.
// For more details, see: https://bugs.ruby-lang.org/issues/16956
bool builtin_inline_p;
struct rb_id_table *outer_variables;