@@ -2097,7 +2097,13 @@ impl<'a> std::fmt::Display for InsnPrinter<'a> {
20972097 Insn :: IntOr { left, right } => { write ! ( f, "IntOr {left}, {right}" ) } ,
20982098 Insn :: FixnumLShift { left, right, .. } => { write ! ( f, "FixnumLShift {left}, {right}" ) } ,
20992099 Insn :: FixnumRShift { left, right, .. } => { write ! ( f, "FixnumRShift {left}, {right}" ) } ,
2100- Insn :: GuardType { val, guard_type, .. } => { write ! ( f, "GuardType {val}, {}" , guard_type. print( self . ptr_map) ) } ,
2100+ Insn :: GuardType { val, guard_type, recompile, .. } => {
2101+ write ! ( f, "GuardType {val}, {}" , guard_type. print( self . ptr_map) ) ?;
2102+ if recompile. is_some ( ) {
2103+ write ! ( f, " recompile" ) ?;
2104+ }
2105+ return Ok ( ( ) )
2106+ } ,
21012107 Insn :: RefineType { val, new_type, .. } => { write ! ( f, "RefineType {val}, {}" , new_type. print( self . ptr_map) ) } ,
21022108 Insn :: HasType { val, expected, .. } => { write ! ( f, "HasType {val}, {}" , expected. print( self . ptr_map) ) } ,
21032109 Insn :: GuardBitEquals { val, expected, recompile, .. } => {
@@ -3671,7 +3677,8 @@ impl Function {
36713677
36723678 // Add GuardType for profiled receiver
36733679 if let Some ( profiled_type) = profiled_type {
3674- recv = self . push_insn ( block, Insn :: GuardType { val : recv, guard_type : Type :: from_profiled_type ( profiled_type) , state, recompile : None } ) ;
3680+ let argc = unsafe { vm_ci_argc ( ci) } as i32 ;
3681+ recv = self . push_insn ( block, Insn :: GuardType { val : recv, guard_type : Type :: from_profiled_type ( profiled_type) , state, recompile : Some ( Recompile :: ProfileSend { argc } ) } ) ;
36753682 }
36763683
36773684 let send_direct = self . push_insn ( block, Insn :: SendDirect { recv, cd, cme, iseq, args : processed_args, kw_bits, state : send_state, block : send_block } ) ;
0 commit comments