YJIT: Count getivar side exits by receiver flag changes (#6735)

This commit is contained in:
Takashi Kokubun 2022-11-15 14:50:12 -08:00 committed by GitHub
parent 1125274c4e
commit d1fb659547
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
Notes: git 2022-11-15 22:50:38 +00:00
Merged-By: k0kubun <takashikkbn@gmail.com>

View File

@ -2051,6 +2051,7 @@ fn gen_get_ivar(
asm.comment("guard shape, embedded, and T_OBJECT"); asm.comment("guard shape, embedded, and T_OBJECT");
let flags_opnd = asm.and(flags_opnd, Opnd::UImm(expected_flags_mask as u64)); let flags_opnd = asm.and(flags_opnd, Opnd::UImm(expected_flags_mask as u64));
asm.cmp(flags_opnd, Opnd::UImm(expected_flags as u64)); asm.cmp(flags_opnd, Opnd::UImm(expected_flags as u64));
let megamorphic_side_exit = counted_exit!(ocb, side_exit, getivar_megamorphic).into();
jit_chain_guard( jit_chain_guard(
JCC_JNE, JCC_JNE,
jit, jit,
@ -2058,7 +2059,7 @@ fn gen_get_ivar(
asm, asm,
ocb, ocb,
max_chain_depth, max_chain_depth,
side_exit, megamorphic_side_exit,
); );
match ivar_index { match ivar_index {