summaryrefslogtreecommitdiff
path: root/yjit
diff options
context:
space:
mode:
authorTakashi Kokubun <takashikkbn@gmail.com>2022-11-29 07:09:32 -0800
committerGitHub <noreply@github.com>2022-11-29 10:09:32 -0500
commit3e4d1a1dd1c78e8e9cd18d0a39b6846d79f90d6e (patch)
tree5bfe7e5ef449b854dd1733c70d1f78c8b67b9fb1 /yjit
parent67ae3e97388bc9083cb3cc2f22ba8abc28d6fda3 (diff)
YJIT: Skip checking interrupt_mask (#6825)
Notes
Notes: Merged-By: maximecb <maximecb@ruby-lang.org>
Diffstat (limited to 'yjit')
-rw-r--r--yjit/src/codegen.rs10
1 files changed, 4 insertions, 6 deletions
diff --git a/yjit/src/codegen.rs b/yjit/src/codegen.rs
index 54d4f3790c..d1f40e0b6d 100644
--- a/yjit/src/codegen.rs
+++ b/yjit/src/codegen.rs
@@ -642,12 +642,10 @@ fn gen_check_ints(asm: &mut Assembler, side_exit: CodePtr) {
// see RUBY_VM_CHECK_INTS(ec) macro
asm.comment("RUBY_VM_CHECK_INTS(ec)");
- let not_mask = asm.not(Opnd::mem(32, EC, RUBY_OFFSET_EC_INTERRUPT_MASK));
-
- asm.test(
- Opnd::mem(32, EC, RUBY_OFFSET_EC_INTERRUPT_FLAG),
- not_mask,
- );
+ // Not checking interrupt_mask since it's zero outside finalize_deferred_heap_pages,
+ // signal_exec, or rb_postponed_job_flush.
+ let interrupt_flag = asm.load(Opnd::mem(32, EC, RUBY_OFFSET_EC_INTERRUPT_FLAG));
+ asm.test(interrupt_flag, interrupt_flag);
asm.jnz(Target::SideExitPtr(side_exit));
}