summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJean Boussier <jean.boussier@gmail.com>2025-08-28 22:53:11 +0200
committerJean Boussier <jean.boussier@gmail.com>2025-08-29 00:02:29 +0200
commit3646596e5bd4c445b158be5fd3780e7685aa9b7f (patch)
tree27ef01059d91e7cfdae3dfc97795a0f13654f6d7
parentb6d4882c05d64aa6cb5ff8761584ae910de67f21 (diff)
YJIT: rb_ivar_get_at assume leaf-call when single ractor
The only exception it could raise is if we're in multi ractor mode.
-rw-r--r--yjit/src/codegen.rs6
1 files changed, 4 insertions, 2 deletions
diff --git a/yjit/src/codegen.rs b/yjit/src/codegen.rs
index f27d09d7d4..ff001b6476 100644
--- a/yjit/src/codegen.rs
+++ b/yjit/src/codegen.rs
@@ -2947,8 +2947,10 @@ fn gen_get_ivar(
} else {
asm_comment!(asm, "call rb_ivar_get_at()");
- // The function could raise RactorIsolationError.
- jit_prepare_non_leaf_call(jit, asm);
+ if !assume_single_ractor_mode(jit, asm) {
+ // The function could raise RactorIsolationError.
+ jit_prepare_non_leaf_call(jit, asm);
+ }
asm.ccall(rb_ivar_get_at as *const u8, vec![recv, Opnd::UImm((ivar_index as u32).into()), Opnd::UImm(ivar_name)])
};