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: 7ef6a00176
PR-URL: https://github.com/nodejs/node/pull/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>
This commit is contained in:
Xiao-Tao
2025-11-02 21:17:53 +08:00
committed by GitHub
parent 24bebd01a7
commit 8f66bec900
4 changed files with 22 additions and 20 deletions

View File

@@ -38,7 +38,7 @@
# Reset this number to 0 on major V8 upgrades.
# Increment by one for each non-official patch applied to deps/v8.
'v8_embedder_string': '-node.9',
'v8_embedder_string': '-node.10',
##### V8 defaults for Node.js #####

View File

@@ -328,7 +328,7 @@ static void GetSharedFunctionInfoBytecodeOrBaseline(
if (v8_flags.debug_code) {
Label not_baseline;
__ GetObjectType(data, scratch1, scratch1);
__ Branch(&not_baseline, ne, scratch1, Operand(CODETYPE));
__ Branch(&not_baseline, ne, scratch1, Operand(CODE_TYPE));
AssertCodeIsBaseline(masm, data, scratch1);
__ Branch(is_baseline);
__ bind(&not_baseline);

View File

@@ -2724,12 +2724,12 @@ int32_t MacroAssembler::GetOffset(Label* L, OffsetSize bits) {
}
Register MacroAssembler::GetRkAsRegisterHelper(const Operand& rk,
Register scratch) {
UseScratchRegisterScope temps) {
Register r2 = no_reg;
if (rk.is_reg()) {
r2 = rk.rm();
} else {
r2 = scratch;
r2 = temps.Acquire();
li(r2, rk);
}
@@ -2741,7 +2741,6 @@ bool MacroAssembler::BranchShortOrFallback(Label* L, Condition cond,
bool need_link) {
UseScratchRegisterScope temps(this);
BlockTrampolinePoolScope block_trampoline_pool(this);
Register scratch = temps.Acquire();
DCHECK_NE(rj, zero_reg);
// Be careful to always use shifted_branch_offset only just before the
@@ -2777,7 +2776,7 @@ bool MacroAssembler::BranchShortOrFallback(Label* L, Condition cond,
if (L->is_bound() && !is_near(L, OffsetSize::kOffset16)) return false;
if (need_link) pcaddi(ra, 2);
// We don't want any other register but scratch clobbered.
Register sc = GetRkAsRegisterHelper(rk, scratch);
Register sc = GetRkAsRegisterHelper(rk, temps);
offset = GetOffset(L, OffsetSize::kOffset16);
beq(rj, sc, offset);
}
@@ -2799,7 +2798,7 @@ bool MacroAssembler::BranchShortOrFallback(Label* L, Condition cond,
if (L->is_bound() && !is_near(L, OffsetSize::kOffset16)) return false;
if (need_link) pcaddi(ra, 2);
// We don't want any other register but scratch clobbered.
Register sc = GetRkAsRegisterHelper(rk, scratch);
Register sc = GetRkAsRegisterHelper(rk, temps);
offset = GetOffset(L, OffsetSize::kOffset16);
bne(rj, sc, offset);
}
@@ -2818,7 +2817,7 @@ bool MacroAssembler::BranchShortOrFallback(Label* L, Condition cond,
} else {
if (L->is_bound() && !is_near(L, OffsetSize::kOffset16)) return false;
if (need_link) pcaddi(ra, 2);
Register sc = GetRkAsRegisterHelper(rk, scratch);
Register sc = GetRkAsRegisterHelper(rk, temps);
DCHECK(rj != sc);
offset = GetOffset(L, OffsetSize::kOffset16);
blt(sc, rj, offset);
@@ -2839,7 +2838,7 @@ bool MacroAssembler::BranchShortOrFallback(Label* L, Condition cond,
} else {
if (L->is_bound() && !is_near(L, OffsetSize::kOffset16)) return false;
if (need_link) pcaddi(ra, 2);
Register sc = GetRkAsRegisterHelper(rk, scratch);
Register sc = GetRkAsRegisterHelper(rk, temps);
DCHECK(rj != sc);
offset = GetOffset(L, OffsetSize::kOffset16);
bge(rj, sc, offset);
@@ -2857,7 +2856,7 @@ bool MacroAssembler::BranchShortOrFallback(Label* L, Condition cond,
} else {
if (L->is_bound() && !is_near(L, OffsetSize::kOffset16)) return false;
if (need_link) pcaddi(ra, 2);
Register sc = GetRkAsRegisterHelper(rk, scratch);
Register sc = GetRkAsRegisterHelper(rk, temps);
DCHECK(rj != sc);
offset = GetOffset(L, OffsetSize::kOffset16);
blt(rj, sc, offset);
@@ -2878,7 +2877,7 @@ bool MacroAssembler::BranchShortOrFallback(Label* L, Condition cond,
} else {
if (L->is_bound() && !is_near(L, OffsetSize::kOffset16)) return false;
if (need_link) pcaddi(ra, 2);
Register sc = GetRkAsRegisterHelper(rk, scratch);
Register sc = GetRkAsRegisterHelper(rk, temps);
DCHECK(rj != sc);
offset = GetOffset(L, OffsetSize::kOffset16);
bge(sc, rj, offset);
@@ -2898,7 +2897,7 @@ bool MacroAssembler::BranchShortOrFallback(Label* L, Condition cond,
} else {
if (L->is_bound() && !is_near(L, OffsetSize::kOffset16)) return false;
if (need_link) pcaddi(ra, 2);
Register sc = GetRkAsRegisterHelper(rk, scratch);
Register sc = GetRkAsRegisterHelper(rk, temps);
DCHECK(rj != sc);
offset = GetOffset(L, OffsetSize::kOffset16);
bltu(sc, rj, offset);
@@ -2919,7 +2918,7 @@ bool MacroAssembler::BranchShortOrFallback(Label* L, Condition cond,
} else {
if (L->is_bound() && !is_near(L, OffsetSize::kOffset16)) return false;
if (need_link) pcaddi(ra, 2);
Register sc = GetRkAsRegisterHelper(rk, scratch);
Register sc = GetRkAsRegisterHelper(rk, temps);
DCHECK(rj != sc);
offset = GetOffset(L, OffsetSize::kOffset16);
bgeu(rj, sc, offset);
@@ -2934,7 +2933,7 @@ bool MacroAssembler::BranchShortOrFallback(Label* L, Condition cond,
} else {
if (L->is_bound() && !is_near(L, OffsetSize::kOffset16)) return false;
if (need_link) pcaddi(ra, 2);
Register sc = GetRkAsRegisterHelper(rk, scratch);
Register sc = GetRkAsRegisterHelper(rk, temps);
DCHECK(rj != sc);
offset = GetOffset(L, OffsetSize::kOffset16);
bltu(rj, sc, offset);
@@ -2954,7 +2953,7 @@ bool MacroAssembler::BranchShortOrFallback(Label* L, Condition cond,
} else {
if (L->is_bound() && !is_near(L, OffsetSize::kOffset16)) return false;
if (need_link) pcaddi(ra, 2);
Register sc = GetRkAsRegisterHelper(rk, scratch);
Register sc = GetRkAsRegisterHelper(rk, temps);
DCHECK(rj != sc);
offset = GetOffset(L, OffsetSize::kOffset16);
bgeu(sc, rj, offset);
@@ -3185,10 +3184,12 @@ void MacroAssembler::CompareTaggedRootAndBranch(const Register& obj,
// Some smi roots contain system pointer size values like stack limits.
DCHECK(base::IsInRange(index, RootIndex::kFirstStrongOrReadOnlyRoot,
RootIndex::kLastStrongOrReadOnlyRoot));
Register temp = temps.Acquire();
DCHECK(!AreAliased(obj, temp));
LoadRoot(temp, index);
CompareTaggedAndBranch(target, cc, obj, Operand(temp));
Register scratch1 = temps.Acquire();
Register scratch2 = temps.Acquire();
DCHECK(!AreAliased(obj, scratch1, scratch2));
slli_w(scratch1, obj, 0);
LoadTaggedRoot(scratch2, index);
Branch(target, cc, scratch1, Operand(scratch2));
}
// Compare the object in a register to a value from the root list.

View File

@@ -1303,7 +1303,8 @@ class V8_EXPORT_PRIVATE MacroAssembler : public MacroAssemblerBase {
}
protected:
inline Register GetRkAsRegisterHelper(const Operand& rk, Register scratch);
inline Register GetRkAsRegisterHelper(const Operand& rk,
UseScratchRegisterScope temps);
inline int32_t GetOffset(Label* L, OffsetSize bits);
private: