Skip to content

Commit 07bcd28

Browse files
Xiao-Taoaduh95
authored andcommitted
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 <leszeks@chromium.org> Auto-Submit: Zhao Jiazhong <zhaojiazhong-hf@loongson.cn> Commit-Queue: Zhao Jiazhong <zhaojiazhong-hf@loongson.cn> Cr-Commit-Position: refs/heads/main@{#103105} Refs: v8/v8@7ef6a00 PR-URL: #60259 Reviewed-By: Michaël Zasso <targos@protonmail.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Marco Ippolito <marcoippolito54@gmail.com> Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com> Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com> Reviewed-By: Ulises Gascón <ulisesgascongonzalez@gmail.com>
1 parent 4810e4b commit 07bcd28

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.11',
41+
'v8_embedder_string': '-node.12',
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
@@ -2618,12 +2618,12 @@ int32_t MacroAssembler::GetOffset(Label* L, OffsetSize bits) {
26182618
}
26192619

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

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

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

12881288
protected:
1289-
inline Register GetRkAsRegisterHelper(const Operand& rk, Register scratch);
1289+
inline Register GetRkAsRegisterHelper(const Operand& rk,
1290+
UseScratchRegisterScope temps);
12901291
inline int32_t GetOffset(Label* L, OffsetSize bits);
12911292

12921293
private:

0 commit comments

Comments
 (0)