diff options
author | Takashi Kokubun <takashikkbn@gmail.com> | 2022-11-29 07:09:32 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-11-29 10:09:32 -0500 |
commit | 3e4d1a1dd1c78e8e9cd18d0a39b6846d79f90d6e (patch) | |
tree | 5bfe7e5ef449b854dd1733c70d1f78c8b67b9fb1 /yjit | |
parent | 67ae3e97388bc9083cb3cc2f22ba8abc28d6fda3 (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.rs | 10 |
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)); } |