deps: V8: cherry-pick 7ef6a001762 · nodejs/node@07bcd28
@@ -2618,12 +2618,12 @@ int32_t MacroAssembler::GetOffset(Label* L, OffsetSize bits) {
26182618}
2619261926202620Register MacroAssembler::GetRkAsRegisterHelper(const Operand& rk,
2621-Register scratch) {
2621+UseScratchRegisterScope temps) {
26222622 Register r2 = no_reg;
26232623if (rk.is_reg()) {
26242624 r2 = rk.rm();
26252625 } else {
2626- r2 = scratch;
2626+ r2 = temps.Acquire();
26272627li(r2, rk);
26282628 }
26292629@@ -2635,7 +2635,6 @@ bool MacroAssembler::BranchShortOrFallback(Label* L, Condition cond,
26352635bool need_link) {
26362636 UseScratchRegisterScope temps(this);
26372637 BlockTrampolinePoolScope block_trampoline_pool(this);
2638- Register scratch = temps.Acquire();
26392638DCHECK_NE(rj, zero_reg);
2640263926412640// Be careful to always use shifted_branch_offset only just before the
@@ -2671,7 +2670,7 @@ bool MacroAssembler::BranchShortOrFallback(Label* L, Condition cond,
26712670if (L->is_bound() && !is_near(L, OffsetSize::kOffset16)) return false;
26722671if (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);
26762675beq(rj, sc, offset);
26772676 }
@@ -2693,7 +2692,7 @@ bool MacroAssembler::BranchShortOrFallback(Label* L, Condition cond,
26932692if (L->is_bound() && !is_near(L, OffsetSize::kOffset16)) return false;
26942693if (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);
26982697bne(rj, sc, offset);
26992698 }
@@ -2712,7 +2711,7 @@ bool MacroAssembler::BranchShortOrFallback(Label* L, Condition cond,
27122711 } else {
27132712if (L->is_bound() && !is_near(L, OffsetSize::kOffset16)) return false;
27142713if (need_link) pcaddi(ra, 2);
2715- Register sc = GetRkAsRegisterHelper(rk, scratch);
2714+ Register sc = GetRkAsRegisterHelper(rk, temps);
27162715DCHECK(rj != sc);
27172716 offset = GetOffset(L, OffsetSize::kOffset16);
27182717blt(sc, rj, offset);
@@ -2733,7 +2732,7 @@ bool MacroAssembler::BranchShortOrFallback(Label* L, Condition cond,
27332732 } else {
27342733if (L->is_bound() && !is_near(L, OffsetSize::kOffset16)) return false;
27352734if (need_link) pcaddi(ra, 2);
2736- Register sc = GetRkAsRegisterHelper(rk, scratch);
2735+ Register sc = GetRkAsRegisterHelper(rk, temps);
27372736DCHECK(rj != sc);
27382737 offset = GetOffset(L, OffsetSize::kOffset16);
27392738bge(rj, sc, offset);
@@ -2751,7 +2750,7 @@ bool MacroAssembler::BranchShortOrFallback(Label* L, Condition cond,
27512750 } else {
27522751if (L->is_bound() && !is_near(L, OffsetSize::kOffset16)) return false;
27532752if (need_link) pcaddi(ra, 2);
2754- Register sc = GetRkAsRegisterHelper(rk, scratch);
2753+ Register sc = GetRkAsRegisterHelper(rk, temps);
27552754DCHECK(rj != sc);
27562755 offset = GetOffset(L, OffsetSize::kOffset16);
27572756blt(rj, sc, offset);
@@ -2772,7 +2771,7 @@ bool MacroAssembler::BranchShortOrFallback(Label* L, Condition cond,
27722771 } else {
27732772if (L->is_bound() && !is_near(L, OffsetSize::kOffset16)) return false;
27742773if (need_link) pcaddi(ra, 2);
2775- Register sc = GetRkAsRegisterHelper(rk, scratch);
2774+ Register sc = GetRkAsRegisterHelper(rk, temps);
27762775DCHECK(rj != sc);
27772776 offset = GetOffset(L, OffsetSize::kOffset16);
27782777bge(sc, rj, offset);
@@ -2792,7 +2791,7 @@ bool MacroAssembler::BranchShortOrFallback(Label* L, Condition cond,
27922791 } else {
27932792if (L->is_bound() && !is_near(L, OffsetSize::kOffset16)) return false;
27942793if (need_link) pcaddi(ra, 2);
2795- Register sc = GetRkAsRegisterHelper(rk, scratch);
2794+ Register sc = GetRkAsRegisterHelper(rk, temps);
27962795DCHECK(rj != sc);
27972796 offset = GetOffset(L, OffsetSize::kOffset16);
27982797bltu(sc, rj, offset);
@@ -2813,7 +2812,7 @@ bool MacroAssembler::BranchShortOrFallback(Label* L, Condition cond,
28132812 } else {
28142813if (L->is_bound() && !is_near(L, OffsetSize::kOffset16)) return false;
28152814if (need_link) pcaddi(ra, 2);
2816- Register sc = GetRkAsRegisterHelper(rk, scratch);
2815+ Register sc = GetRkAsRegisterHelper(rk, temps);
28172816DCHECK(rj != sc);
28182817 offset = GetOffset(L, OffsetSize::kOffset16);
28192818bgeu(rj, sc, offset);
@@ -2828,7 +2827,7 @@ bool MacroAssembler::BranchShortOrFallback(Label* L, Condition cond,
28282827 } else {
28292828if (L->is_bound() && !is_near(L, OffsetSize::kOffset16)) return false;
28302829if (need_link) pcaddi(ra, 2);
2831- Register sc = GetRkAsRegisterHelper(rk, scratch);
2830+ Register sc = GetRkAsRegisterHelper(rk, temps);
28322831DCHECK(rj != sc);
28332832 offset = GetOffset(L, OffsetSize::kOffset16);
28342833bltu(rj, sc, offset);
@@ -2848,7 +2847,7 @@ bool MacroAssembler::BranchShortOrFallback(Label* L, Condition cond,
28482847 } else {
28492848if (L->is_bound() && !is_near(L, OffsetSize::kOffset16)) return false;
28502849if (need_link) pcaddi(ra, 2);
2851- Register sc = GetRkAsRegisterHelper(rk, scratch);
2850+ Register sc = GetRkAsRegisterHelper(rk, temps);
28522851DCHECK(rj != sc);
28532852 offset = GetOffset(L, OffsetSize::kOffset16);
28542853bgeu(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.
30803079DCHECK(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}
3087308830883089// Compare the object in a register to a value from the root list.