Skip to content

Commit 63d9fb7

Browse files
committed
deps: V8: cherry-pick 7ef6a001762
Origin commit message: [loong64] Fix no pointer compression build 1. Fix a typo that breaks no static root build. 2. Use less scratch regs in some compare and branch functions. This bug is triggered by Node.js loong64 port. Change-Id: If251906cc07feca237c75f0b65517526085f61dd Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/7031299 Reviewed-by: Leszek Swirski <[email protected]> Auto-Submit: Zhao Jiazhong <[email protected]> Commit-Queue: Zhao Jiazhong <[email protected]> Cr-Commit-Position: refs/heads/main@{#103105} Refs: v8/v8@7ef6a00
1 parent 3c8c1ef commit 63d9fb7

File tree

4 files changed

+22
-20
lines changed

4 files changed

+22
-20
lines changed

common.gypi

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@
3838

3939
# Reset this number to 0 on major V8 upgrades.
4040
# Increment by one for each non-official patch applied to deps/v8.
41-
'v8_embedder_string': '-node.9',
41+
'v8_embedder_string': '-node.10',
4242

4343
##### V8 defaults for Node.js #####
4444

deps/v8/src/builtins/loong64/builtins-loong64.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -328,7 +328,7 @@ static void GetSharedFunctionInfoBytecodeOrBaseline(
328328
if (v8_flags.debug_code) {
329329
Label not_baseline;
330330
__ GetObjectType(data, scratch1, scratch1);
331-
__ Branch(&not_baseline, ne, scratch1, Operand(CODETYPE));
331+
__ Branch(&not_baseline, ne, scratch1, Operand(CODE_TYPE));
332332
AssertCodeIsBaseline(masm, data, scratch1);
333333
__ Branch(is_baseline);
334334
__ bind(&not_baseline);

deps/v8/src/codegen/loong64/macro-assembler-loong64.cc

Lines changed: 18 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -2650,12 +2650,12 @@ int32_t MacroAssembler::GetOffset(Label* L, OffsetSize bits) {
26502650
}
26512651

26522652
Register 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.

deps/v8/src/codegen/loong64/macro-assembler-loong64.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1295,7 +1295,8 @@ class V8_EXPORT_PRIVATE MacroAssembler : public MacroAssemblerBase {
12951295
}
12961296

12971297
protected:
1298-
inline Register GetRkAsRegisterHelper(const Operand& rk, Register scratch);
1298+
inline Register GetRkAsRegisterHelper(const Operand& rk,
1299+
UseScratchRegisterScope temps);
12991300
inline int32_t GetOffset(Label* L, OffsetSize bits);
13001301

13011302
private:

0 commit comments

Comments
 (0)