@@ -2618,12 +2618,12 @@ int32_t MacroAssembler::GetOffset(Label* L, OffsetSize bits) {
26182618}
26192619
26202620Register MacroAssembler::GetRkAsRegisterHelper (const Operand& rk,
2621- Register scratch ) {
2621+ UseScratchRegisterScope temps ) {
26222622 Register r2 = no_reg;
26232623 if (rk.is_reg ()) {
26242624 r2 = rk.rm ();
26252625 } else {
2626- r2 = scratch ;
2626+ r2 = temps. Acquire () ;
26272627 li (r2, rk);
26282628 }
26292629
@@ -2635,7 +2635,6 @@ bool MacroAssembler::BranchShortOrFallback(Label* L, Condition cond,
26352635 bool need_link) {
26362636 UseScratchRegisterScope temps (this );
26372637 BlockTrampolinePoolScope block_trampoline_pool (this );
2638- Register scratch = temps.Acquire ();
26392638 DCHECK_NE (rj, zero_reg);
26402639
26412640 // Be careful to always use shifted_branch_offset only just before the
@@ -2671,7 +2670,7 @@ bool MacroAssembler::BranchShortOrFallback(Label* L, Condition cond,
26712670 if (L->is_bound () && !is_near (L, OffsetSize::kOffset16 )) return false ;
26722671 if (need_link) pcaddi (ra, 2 );
26732672 // We don't want any other register but scratch clobbered.
2674- Register sc = GetRkAsRegisterHelper (rk, scratch );
2673+ Register sc = GetRkAsRegisterHelper (rk, temps );
26752674 offset = GetOffset (L, OffsetSize::kOffset16 );
26762675 beq (rj, sc, offset);
26772676 }
@@ -2693,7 +2692,7 @@ bool MacroAssembler::BranchShortOrFallback(Label* L, Condition cond,
26932692 if (L->is_bound () && !is_near (L, OffsetSize::kOffset16 )) return false ;
26942693 if (need_link) pcaddi (ra, 2 );
26952694 // We don't want any other register but scratch clobbered.
2696- Register sc = GetRkAsRegisterHelper (rk, scratch );
2695+ Register sc = GetRkAsRegisterHelper (rk, temps );
26972696 offset = GetOffset (L, OffsetSize::kOffset16 );
26982697 bne (rj, sc, offset);
26992698 }
@@ -2712,7 +2711,7 @@ bool MacroAssembler::BranchShortOrFallback(Label* L, Condition cond,
27122711 } else {
27132712 if (L->is_bound () && !is_near (L, OffsetSize::kOffset16 )) return false ;
27142713 if (need_link) pcaddi (ra, 2 );
2715- Register sc = GetRkAsRegisterHelper (rk, scratch );
2714+ Register sc = GetRkAsRegisterHelper (rk, temps );
27162715 DCHECK (rj != sc);
27172716 offset = GetOffset (L, OffsetSize::kOffset16 );
27182717 blt (sc, rj, offset);
@@ -2733,7 +2732,7 @@ bool MacroAssembler::BranchShortOrFallback(Label* L, Condition cond,
27332732 } else {
27342733 if (L->is_bound () && !is_near (L, OffsetSize::kOffset16 )) return false ;
27352734 if (need_link) pcaddi (ra, 2 );
2736- Register sc = GetRkAsRegisterHelper (rk, scratch );
2735+ Register sc = GetRkAsRegisterHelper (rk, temps );
27372736 DCHECK (rj != sc);
27382737 offset = GetOffset (L, OffsetSize::kOffset16 );
27392738 bge (rj, sc, offset);
@@ -2751,7 +2750,7 @@ bool MacroAssembler::BranchShortOrFallback(Label* L, Condition cond,
27512750 } else {
27522751 if (L->is_bound () && !is_near (L, OffsetSize::kOffset16 )) return false ;
27532752 if (need_link) pcaddi (ra, 2 );
2754- Register sc = GetRkAsRegisterHelper (rk, scratch );
2753+ Register sc = GetRkAsRegisterHelper (rk, temps );
27552754 DCHECK (rj != sc);
27562755 offset = GetOffset (L, OffsetSize::kOffset16 );
27572756 blt (rj, sc, offset);
@@ -2772,7 +2771,7 @@ bool MacroAssembler::BranchShortOrFallback(Label* L, Condition cond,
27722771 } else {
27732772 if (L->is_bound () && !is_near (L, OffsetSize::kOffset16 )) return false ;
27742773 if (need_link) pcaddi (ra, 2 );
2775- Register sc = GetRkAsRegisterHelper (rk, scratch );
2774+ Register sc = GetRkAsRegisterHelper (rk, temps );
27762775 DCHECK (rj != sc);
27772776 offset = GetOffset (L, OffsetSize::kOffset16 );
27782777 bge (sc, rj, offset);
@@ -2792,7 +2791,7 @@ bool MacroAssembler::BranchShortOrFallback(Label* L, Condition cond,
27922791 } else {
27932792 if (L->is_bound () && !is_near (L, OffsetSize::kOffset16 )) return false ;
27942793 if (need_link) pcaddi (ra, 2 );
2795- Register sc = GetRkAsRegisterHelper (rk, scratch );
2794+ Register sc = GetRkAsRegisterHelper (rk, temps );
27962795 DCHECK (rj != sc);
27972796 offset = GetOffset (L, OffsetSize::kOffset16 );
27982797 bltu (sc, rj, offset);
@@ -2813,7 +2812,7 @@ bool MacroAssembler::BranchShortOrFallback(Label* L, Condition cond,
28132812 } else {
28142813 if (L->is_bound () && !is_near (L, OffsetSize::kOffset16 )) return false ;
28152814 if (need_link) pcaddi (ra, 2 );
2816- Register sc = GetRkAsRegisterHelper (rk, scratch );
2815+ Register sc = GetRkAsRegisterHelper (rk, temps );
28172816 DCHECK (rj != sc);
28182817 offset = GetOffset (L, OffsetSize::kOffset16 );
28192818 bgeu (rj, sc, offset);
@@ -2828,7 +2827,7 @@ bool MacroAssembler::BranchShortOrFallback(Label* L, Condition cond,
28282827 } else {
28292828 if (L->is_bound () && !is_near (L, OffsetSize::kOffset16 )) return false ;
28302829 if (need_link) pcaddi (ra, 2 );
2831- Register sc = GetRkAsRegisterHelper (rk, scratch );
2830+ Register sc = GetRkAsRegisterHelper (rk, temps );
28322831 DCHECK (rj != sc);
28332832 offset = GetOffset (L, OffsetSize::kOffset16 );
28342833 bltu (rj, sc, offset);
@@ -2848,7 +2847,7 @@ bool MacroAssembler::BranchShortOrFallback(Label* L, Condition cond,
28482847 } else {
28492848 if (L->is_bound () && !is_near (L, OffsetSize::kOffset16 )) return false ;
28502849 if (need_link) pcaddi (ra, 2 );
2851- Register sc = GetRkAsRegisterHelper (rk, scratch );
2850+ Register sc = GetRkAsRegisterHelper (rk, temps );
28522851 DCHECK (rj != sc);
28532852 offset = GetOffset (L, OffsetSize::kOffset16 );
28542853 bgeu (sc, rj, offset);
@@ -3079,10 +3078,12 @@ void MacroAssembler::CompareTaggedRootAndBranch(const Register& obj,
30793078 // Some smi roots contain system pointer size values like stack limits.
30803079 DCHECK (base::IsInRange (index, RootIndex::kFirstStrongOrReadOnlyRoot ,
30813080 RootIndex::kLastStrongOrReadOnlyRoot ));
3082- Register temp = temps.Acquire ();
3083- DCHECK (!AreAliased (obj, temp));
3084- LoadRoot (temp, index);
3085- CompareTaggedAndBranch (target, cc, obj, Operand (temp));
3081+ Register scratch1 = temps.Acquire ();
3082+ Register scratch2 = temps.Acquire ();
3083+ DCHECK (!AreAliased (obj, scratch1, scratch2));
3084+ slli_w (scratch1, obj, 0 );
3085+ LoadTaggedRoot (scratch2, index);
3086+ Branch (target, cc, scratch1, Operand (scratch2));
30863087}
30873088
30883089// Compare the object in a register to a value from the root list.
0 commit comments