YJIT: Skip checking interrupt_mask (#6825)

This commit is contained in:
Takashi Kokubun 2022-11-29 07:09:32 -08:00 committed by GitHub
parent 67ae3e9738
commit 3e4d1a1dd1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
Notes: git 2022-11-29 15:09:57 +00:00
Merged-By: maximecb <maximecb@ruby-lang.org>

View File

@ -642,12 +642,10 @@ fn gen_check_ints(asm: &mut Assembler, side_exit: CodePtr) {
// see RUBY_VM_CHECK_INTS(ec) macro // see RUBY_VM_CHECK_INTS(ec) macro
asm.comment("RUBY_VM_CHECK_INTS(ec)"); asm.comment("RUBY_VM_CHECK_INTS(ec)");
let not_mask = asm.not(Opnd::mem(32, EC, RUBY_OFFSET_EC_INTERRUPT_MASK)); // Not checking interrupt_mask since it's zero outside finalize_deferred_heap_pages,
// signal_exec, or rb_postponed_job_flush.
asm.test( let interrupt_flag = asm.load(Opnd::mem(32, EC, RUBY_OFFSET_EC_INTERRUPT_FLAG));
Opnd::mem(32, EC, RUBY_OFFSET_EC_INTERRUPT_FLAG), asm.test(interrupt_flag, interrupt_flag);
not_mask,
);
asm.jnz(Target::SideExitPtr(side_exit)); asm.jnz(Target::SideExitPtr(side_exit));
} }