summaryrefslogtreecommitdiff
path: root/prism_compile.c
diff options
context:
space:
mode:
authorTakashi Kokubun <[email protected]>2024-11-04 08:14:28 -0800
committerGitHub <[email protected]>2024-11-04 11:14:28 -0500
commit478e0fc710b8fefaa3bdb7cb41dda8716e29927a (patch)
tree7e4dfe65ad53e2ae5483adb0276d00ebe58bb802 /prism_compile.c
parent51ac93011a8b279c1e2b93bbe6c8709392e82f57 (diff)
YJIT: Replace Array#each only when YJIT is enabled (#11955)
* YJIT: Replace Array#each only when YJIT is enabled * Add comments about BUILTIN_ATTR_C_TRACE * Make Ruby Array#each available with --yjit as well * Fix all paths that expect a C location * Use method_basic_definition_p to detect patches * Copy a comment about C_TRACE flag to compilers * Rephrase a comment about add_yjit_hook * Give METHOD_ENTRY_BASIC flag to Array#each * Add --yjit-c-builtin option * Allow inconsistent source_location in test-spec * Refactor a check of BUILTIN_ATTR_C_TRACE * Set METHOD_ENTRY_BASIC without touching vm->running
Notes
Notes: Merged-By: maximecb <[email protected]>
Diffstat (limited to 'prism_compile.c')
-rw-r--r--prism_compile.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/prism_compile.c b/prism_compile.c
index 46ffccaaa1..53938ebb0c 100644
--- a/prism_compile.c
+++ b/prism_compile.c
@@ -3387,6 +3387,10 @@ pm_compile_builtin_attr(rb_iseq_t *iseq, const pm_scope_node_t *scope_node, cons
else if (strcmp(RSTRING_PTR(string), "use_block") == 0) {
iseq_set_use_block(iseq);
}
+ else if (strcmp(RSTRING_PTR(string), "c_trace") == 0) {
+ // Let the iseq act like a C method in backtraces
+ ISEQ_BODY(iseq)->builtin_attrs |= BUILTIN_ATTR_C_TRACE;
+ }
else {
COMPILE_ERROR(iseq, node_location->line, "unknown argument to attr!: %s", RSTRING_PTR(string));
return COMPILE_NG;