mirror of
https://github.com/zebrajr/node.git
synced 2026-01-15 12:15:26 +00:00
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:
@@ -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 #####
|
||||
|
||||
|
||||
@@ -328,7 +328,7 @@ static void GetSharedFunctionInfoBytecodeOrBaseline(
|
||||
if (v8_flags.debug_code) {
|
||||
Label not_baseline;
|
||||
__ GetObjectType(data, scratch1, scratch1);
|
||||
__ Branch(¬_baseline, ne, scratch1, Operand(CODETYPE));
|
||||
__ Branch(¬_baseline, ne, scratch1, Operand(CODE_TYPE));
|
||||
AssertCodeIsBaseline(masm, data, scratch1);
|
||||
__ Branch(is_baseline);
|
||||
__ bind(¬_baseline);
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user