Skip to content

Commit 8f66bec

Browse files
authored
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 PR-URL: #60259 Reviewed-By: Michaël Zasso <[email protected]> Reviewed-By: Colin Ihrig <[email protected]> Reviewed-By: Marco Ippolito <[email protected]> Reviewed-By: Yagiz Nizipli <[email protected]> Reviewed-By: Antoine du Hamel <[email protected]> Reviewed-By: Ulises Gascón <[email protected]>
1 parent 24bebd0 commit 8f66bec

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
@@ -2724,12 +2724,12 @@ int32_t MacroAssembler::GetOffset(Label* L, OffsetSize bits) {
27242724
}
27252725

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

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

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

13051305
protected:
1306-
inline Register GetRkAsRegisterHelper(const Operand& rk, Register scratch);
1306+
inline Register GetRkAsRegisterHelper(const Operand& rk,
1307+
UseScratchRegisterScope temps);
13071308
inline int32_t GetOffset(Label* L, OffsetSize bits);
13081309

13091310
private:

0 commit comments

Comments
 (0)