@@ -2650,12 +2650,12 @@ int32_t MacroAssembler::GetOffset(Label* L, OffsetSize bits) {
26502650}
26512651
26522652Register MacroAssembler::GetRkAsRegisterHelper (const Operand& rk,
2653- Register scratch ) {
2653+ UseScratchRegisterScope temps ) {
26542654 Register r2 = no_reg;
26552655 if (rk.is_reg ()) {
26562656 r2 = rk.rm ();
26572657 } else {
2658- r2 = scratch ;
2658+ r2 = temps. Acquire () ;
26592659 li (r2, rk);
26602660 }
26612661
@@ -2667,7 +2667,6 @@ bool MacroAssembler::BranchShortOrFallback(Label* L, Condition cond,
26672667 bool need_link) {
26682668 UseScratchRegisterScope temps (this );
26692669 BlockTrampolinePoolScope block_trampoline_pool (this );
2670- Register scratch = temps.Acquire ();
26712670 DCHECK_NE (rj, zero_reg);
26722671
26732672 // Be careful to always use shifted_branch_offset only just before the
@@ -2703,7 +2702,7 @@ bool MacroAssembler::BranchShortOrFallback(Label* L, Condition cond,
27032702 if (L->is_bound () && !is_near (L, OffsetSize::kOffset16 )) return false ;
27042703 if (need_link) pcaddi (ra, 2 );
27052704 // We don't want any other register but scratch clobbered.
2706- Register sc = GetRkAsRegisterHelper (rk, scratch );
2705+ Register sc = GetRkAsRegisterHelper (rk, temps );
27072706 offset = GetOffset (L, OffsetSize::kOffset16 );
27082707 beq (rj, sc, offset);
27092708 }
@@ -2725,7 +2724,7 @@ bool MacroAssembler::BranchShortOrFallback(Label* L, Condition cond,
27252724 if (L->is_bound () && !is_near (L, OffsetSize::kOffset16 )) return false ;
27262725 if (need_link) pcaddi (ra, 2 );
27272726 // We don't want any other register but scratch clobbered.
2728- Register sc = GetRkAsRegisterHelper (rk, scratch );
2727+ Register sc = GetRkAsRegisterHelper (rk, temps );
27292728 offset = GetOffset (L, OffsetSize::kOffset16 );
27302729 bne (rj, sc, offset);
27312730 }
@@ -2744,7 +2743,7 @@ bool MacroAssembler::BranchShortOrFallback(Label* L, Condition cond,
27442743 } else {
27452744 if (L->is_bound () && !is_near (L, OffsetSize::kOffset16 )) return false ;
27462745 if (need_link) pcaddi (ra, 2 );
2747- Register sc = GetRkAsRegisterHelper (rk, scratch );
2746+ Register sc = GetRkAsRegisterHelper (rk, temps );
27482747 DCHECK (rj != sc);
27492748 offset = GetOffset (L, OffsetSize::kOffset16 );
27502749 blt (sc, rj, offset);
@@ -2765,7 +2764,7 @@ bool MacroAssembler::BranchShortOrFallback(Label* L, Condition cond,
27652764 } else {
27662765 if (L->is_bound () && !is_near (L, OffsetSize::kOffset16 )) return false ;
27672766 if (need_link) pcaddi (ra, 2 );
2768- Register sc = GetRkAsRegisterHelper (rk, scratch );
2767+ Register sc = GetRkAsRegisterHelper (rk, temps );
27692768 DCHECK (rj != sc);
27702769 offset = GetOffset (L, OffsetSize::kOffset16 );
27712770 bge (rj, sc, offset);
@@ -2783,7 +2782,7 @@ bool MacroAssembler::BranchShortOrFallback(Label* L, Condition cond,
27832782 } else {
27842783 if (L->is_bound () && !is_near (L, OffsetSize::kOffset16 )) return false ;
27852784 if (need_link) pcaddi (ra, 2 );
2786- Register sc = GetRkAsRegisterHelper (rk, scratch );
2785+ Register sc = GetRkAsRegisterHelper (rk, temps );
27872786 DCHECK (rj != sc);
27882787 offset = GetOffset (L, OffsetSize::kOffset16 );
27892788 blt (rj, sc, offset);
@@ -2804,7 +2803,7 @@ bool MacroAssembler::BranchShortOrFallback(Label* L, Condition cond,
28042803 } else {
28052804 if (L->is_bound () && !is_near (L, OffsetSize::kOffset16 )) return false ;
28062805 if (need_link) pcaddi (ra, 2 );
2807- Register sc = GetRkAsRegisterHelper (rk, scratch );
2806+ Register sc = GetRkAsRegisterHelper (rk, temps );
28082807 DCHECK (rj != sc);
28092808 offset = GetOffset (L, OffsetSize::kOffset16 );
28102809 bge (sc, rj, offset);
@@ -2824,7 +2823,7 @@ bool MacroAssembler::BranchShortOrFallback(Label* L, Condition cond,
28242823 } else {
28252824 if (L->is_bound () && !is_near (L, OffsetSize::kOffset16 )) return false ;
28262825 if (need_link) pcaddi (ra, 2 );
2827- Register sc = GetRkAsRegisterHelper (rk, scratch );
2826+ Register sc = GetRkAsRegisterHelper (rk, temps );
28282827 DCHECK (rj != sc);
28292828 offset = GetOffset (L, OffsetSize::kOffset16 );
28302829 bltu (sc, rj, offset);
@@ -2845,7 +2844,7 @@ bool MacroAssembler::BranchShortOrFallback(Label* L, Condition cond,
28452844 } else {
28462845 if (L->is_bound () && !is_near (L, OffsetSize::kOffset16 )) return false ;
28472846 if (need_link) pcaddi (ra, 2 );
2848- Register sc = GetRkAsRegisterHelper (rk, scratch );
2847+ Register sc = GetRkAsRegisterHelper (rk, temps );
28492848 DCHECK (rj != sc);
28502849 offset = GetOffset (L, OffsetSize::kOffset16 );
28512850 bgeu (rj, sc, offset);
@@ -2860,7 +2859,7 @@ bool MacroAssembler::BranchShortOrFallback(Label* L, Condition cond,
28602859 } else {
28612860 if (L->is_bound () && !is_near (L, OffsetSize::kOffset16 )) return false ;
28622861 if (need_link) pcaddi (ra, 2 );
2863- Register sc = GetRkAsRegisterHelper (rk, scratch );
2862+ Register sc = GetRkAsRegisterHelper (rk, temps );
28642863 DCHECK (rj != sc);
28652864 offset = GetOffset (L, OffsetSize::kOffset16 );
28662865 bltu (rj, sc, offset);
@@ -2880,7 +2879,7 @@ bool MacroAssembler::BranchShortOrFallback(Label* L, Condition cond,
28802879 } else {
28812880 if (L->is_bound () && !is_near (L, OffsetSize::kOffset16 )) return false ;
28822881 if (need_link) pcaddi (ra, 2 );
2883- Register sc = GetRkAsRegisterHelper (rk, scratch );
2882+ Register sc = GetRkAsRegisterHelper (rk, temps );
28842883 DCHECK (rj != sc);
28852884 offset = GetOffset (L, OffsetSize::kOffset16 );
28862885 bgeu (sc, rj, offset);
@@ -3111,10 +3110,12 @@ void MacroAssembler::CompareTaggedRootAndBranch(const Register& obj,
31113110 // Some smi roots contain system pointer size values like stack limits.
31123111 DCHECK (base::IsInRange (index, RootIndex::kFirstStrongOrReadOnlyRoot ,
31133112 RootIndex::kLastStrongOrReadOnlyRoot ));
3114- Register temp = temps.Acquire ();
3115- DCHECK (!AreAliased (obj, temp));
3116- LoadRoot (temp, index);
3117- CompareTaggedAndBranch (target, cc, obj, Operand (temp));
3113+ Register scratch1 = temps.Acquire ();
3114+ Register scratch2 = temps.Acquire ();
3115+ DCHECK (!AreAliased (obj, scratch1, scratch2));
3116+ slli_w (scratch1, obj, 0 );
3117+ LoadTaggedRoot (scratch2, index);
3118+ Branch (target, cc, scratch1, Operand (scratch2));
31183119}
31193120
31203121// Compare the object in a register to a value from the root list.
0 commit comments