@@ -2724,12 +2724,12 @@ int32_t MacroAssembler::GetOffset(Label* L, OffsetSize bits) {
27242724}
27252725
27262726Register MacroAssembler::GetRkAsRegisterHelper (const Operand& rk,
2727- Register scratch ) {
2727+ UseScratchRegisterScope temps ) {
27282728 Register r2 = no_reg;
27292729 if (rk.is_reg ()) {
27302730 r2 = rk.rm ();
27312731 } else {
2732- r2 = scratch ;
2732+ r2 = temps. Acquire () ;
27332733 li (r2, rk);
27342734 }
27352735
@@ -2741,7 +2741,6 @@ bool MacroAssembler::BranchShortOrFallback(Label* L, Condition cond,
27412741 bool need_link) {
27422742 UseScratchRegisterScope temps (this );
27432743 BlockTrampolinePoolScope block_trampoline_pool (this );
2744- Register scratch = temps.Acquire ();
27452744 DCHECK_NE (rj, zero_reg);
27462745
27472746 // Be careful to always use shifted_branch_offset only just before the
@@ -2777,7 +2776,7 @@ bool MacroAssembler::BranchShortOrFallback(Label* L, Condition cond,
27772776 if (L->is_bound () && !is_near (L, OffsetSize::kOffset16 )) return false ;
27782777 if (need_link) pcaddi (ra, 2 );
27792778 // We don't want any other register but scratch clobbered.
2780- Register sc = GetRkAsRegisterHelper (rk, scratch );
2779+ Register sc = GetRkAsRegisterHelper (rk, temps );
27812780 offset = GetOffset (L, OffsetSize::kOffset16 );
27822781 beq (rj, sc, offset);
27832782 }
@@ -2799,7 +2798,7 @@ bool MacroAssembler::BranchShortOrFallback(Label* L, Condition cond,
27992798 if (L->is_bound () && !is_near (L, OffsetSize::kOffset16 )) return false ;
28002799 if (need_link) pcaddi (ra, 2 );
28012800 // We don't want any other register but scratch clobbered.
2802- Register sc = GetRkAsRegisterHelper (rk, scratch );
2801+ Register sc = GetRkAsRegisterHelper (rk, temps );
28032802 offset = GetOffset (L, OffsetSize::kOffset16 );
28042803 bne (rj, sc, offset);
28052804 }
@@ -2818,7 +2817,7 @@ bool MacroAssembler::BranchShortOrFallback(Label* L, Condition cond,
28182817 } else {
28192818 if (L->is_bound () && !is_near (L, OffsetSize::kOffset16 )) return false ;
28202819 if (need_link) pcaddi (ra, 2 );
2821- Register sc = GetRkAsRegisterHelper (rk, scratch );
2820+ Register sc = GetRkAsRegisterHelper (rk, temps );
28222821 DCHECK (rj != sc);
28232822 offset = GetOffset (L, OffsetSize::kOffset16 );
28242823 blt (sc, rj, offset);
@@ -2839,7 +2838,7 @@ bool MacroAssembler::BranchShortOrFallback(Label* L, Condition cond,
28392838 } else {
28402839 if (L->is_bound () && !is_near (L, OffsetSize::kOffset16 )) return false ;
28412840 if (need_link) pcaddi (ra, 2 );
2842- Register sc = GetRkAsRegisterHelper (rk, scratch );
2841+ Register sc = GetRkAsRegisterHelper (rk, temps );
28432842 DCHECK (rj != sc);
28442843 offset = GetOffset (L, OffsetSize::kOffset16 );
28452844 bge (rj, sc, offset);
@@ -2857,7 +2856,7 @@ bool MacroAssembler::BranchShortOrFallback(Label* L, Condition cond,
28572856 } else {
28582857 if (L->is_bound () && !is_near (L, OffsetSize::kOffset16 )) return false ;
28592858 if (need_link) pcaddi (ra, 2 );
2860- Register sc = GetRkAsRegisterHelper (rk, scratch );
2859+ Register sc = GetRkAsRegisterHelper (rk, temps );
28612860 DCHECK (rj != sc);
28622861 offset = GetOffset (L, OffsetSize::kOffset16 );
28632862 blt (rj, sc, offset);
@@ -2878,7 +2877,7 @@ bool MacroAssembler::BranchShortOrFallback(Label* L, Condition cond,
28782877 } else {
28792878 if (L->is_bound () && !is_near (L, OffsetSize::kOffset16 )) return false ;
28802879 if (need_link) pcaddi (ra, 2 );
2881- Register sc = GetRkAsRegisterHelper (rk, scratch );
2880+ Register sc = GetRkAsRegisterHelper (rk, temps );
28822881 DCHECK (rj != sc);
28832882 offset = GetOffset (L, OffsetSize::kOffset16 );
28842883 bge (sc, rj, offset);
@@ -2898,7 +2897,7 @@ bool MacroAssembler::BranchShortOrFallback(Label* L, Condition cond,
28982897 } else {
28992898 if (L->is_bound () && !is_near (L, OffsetSize::kOffset16 )) return false ;
29002899 if (need_link) pcaddi (ra, 2 );
2901- Register sc = GetRkAsRegisterHelper (rk, scratch );
2900+ Register sc = GetRkAsRegisterHelper (rk, temps );
29022901 DCHECK (rj != sc);
29032902 offset = GetOffset (L, OffsetSize::kOffset16 );
29042903 bltu (sc, rj, offset);
@@ -2919,7 +2918,7 @@ bool MacroAssembler::BranchShortOrFallback(Label* L, Condition cond,
29192918 } else {
29202919 if (L->is_bound () && !is_near (L, OffsetSize::kOffset16 )) return false ;
29212920 if (need_link) pcaddi (ra, 2 );
2922- Register sc = GetRkAsRegisterHelper (rk, scratch );
2921+ Register sc = GetRkAsRegisterHelper (rk, temps );
29232922 DCHECK (rj != sc);
29242923 offset = GetOffset (L, OffsetSize::kOffset16 );
29252924 bgeu (rj, sc, offset);
@@ -2934,7 +2933,7 @@ bool MacroAssembler::BranchShortOrFallback(Label* L, Condition cond,
29342933 } else {
29352934 if (L->is_bound () && !is_near (L, OffsetSize::kOffset16 )) return false ;
29362935 if (need_link) pcaddi (ra, 2 );
2937- Register sc = GetRkAsRegisterHelper (rk, scratch );
2936+ Register sc = GetRkAsRegisterHelper (rk, temps );
29382937 DCHECK (rj != sc);
29392938 offset = GetOffset (L, OffsetSize::kOffset16 );
29402939 bltu (rj, sc, offset);
@@ -2954,7 +2953,7 @@ bool MacroAssembler::BranchShortOrFallback(Label* L, Condition cond,
29542953 } else {
29552954 if (L->is_bound () && !is_near (L, OffsetSize::kOffset16 )) return false ;
29562955 if (need_link) pcaddi (ra, 2 );
2957- Register sc = GetRkAsRegisterHelper (rk, scratch );
2956+ Register sc = GetRkAsRegisterHelper (rk, temps );
29582957 DCHECK (rj != sc);
29592958 offset = GetOffset (L, OffsetSize::kOffset16 );
29602959 bgeu (sc, rj, offset);
@@ -3185,10 +3184,12 @@ void MacroAssembler::CompareTaggedRootAndBranch(const Register& obj,
31853184 // Some smi roots contain system pointer size values like stack limits.
31863185 DCHECK (base::IsInRange (index, RootIndex::kFirstStrongOrReadOnlyRoot ,
31873186 RootIndex::kLastStrongOrReadOnlyRoot ));
3188- Register temp = temps.Acquire ();
3189- DCHECK (!AreAliased (obj, temp));
3190- LoadRoot (temp, index);
3191- CompareTaggedAndBranch (target, cc, obj, Operand (temp));
3187+ Register scratch1 = temps.Acquire ();
3188+ Register scratch2 = temps.Acquire ();
3189+ DCHECK (!AreAliased (obj, scratch1, scratch2));
3190+ slli_w (scratch1, obj, 0 );
3191+ LoadTaggedRoot (scratch2, index);
3192+ Branch (target, cc, scratch1, Operand (scratch2));
31923193}
31933194
31943195// Compare the object in a register to a value from the root list.
0 commit comments