Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit acec799

Browse filesBrowse files
Xiao-Taomarco-ippolito
authored andcommitted
deps: V8: cherry-pick 6b1b9bca2a8
Origin commit message: [loong64][codegen] Avoid memory access under stack pointer According to LoongArch ABI doc chapter 8.2: "Procedures must not assume the persistence on-stack data of which the addresses lie below the stack pointer." Change-Id: I92735e052227495ac9884c4290b57eaffbf905e1 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/6786372 Auto-Submit: Zhao Jiazhong <zhaojiazhong-hf@loongson.cn> Reviewed-by: Matthias Liedtke <mliedtke@chromium.org> Commit-Queue: Matthias Liedtke <mliedtke@chromium.org> Cr-Commit-Position: refs/heads/main@{#101634} Backport-PR-URL: #59662 Refs: v8/v8@6b1b9bc PR-URL: #59283 Reviewed-By: Marco Ippolito <marcoippolito54@gmail.com>
1 parent 45ec702 commit acec799
Copy full SHA for acec799

File tree

Expand file treeCollapse file tree

2 files changed

+12
-10
lines changed
Open diff view settings
Filter options
Expand file treeCollapse file tree

2 files changed

+12
-10
lines changed
Open diff view settings
Collapse file

‎common.gypi‎

Copy file name to clipboardExpand all lines: common.gypi
+1-1Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@
3636

3737
# Reset this number to 0 on major V8 upgrades.
3838
# Increment by one for each non-official patch applied to deps/v8.
39-
'v8_embedder_string': '-node.31',
39+
'v8_embedder_string': '-node.32',
4040

4141
##### V8 defaults for Node.js #####
4242

Collapse file

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

Copy file name to clipboardExpand all lines: deps/v8/src/codegen/loong64/macro-assembler-loong64.cc
+11-9Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1256,21 +1256,24 @@ void MacroAssembler::li(Register rd, Operand j, LiFlags mode) {
12561256
}
12571257

12581258
void MacroAssembler::MultiPush(RegList regs) {
1259-
int16_t stack_offset = 0;
1259+
int16_t num_to_push = regs.Count();
1260+
int16_t stack_offset = num_to_push * kSystemPointerSize;
12601261

1262+
Sub_d(sp, sp, Operand(stack_offset));
12611263
for (int16_t i = kNumRegisters - 1; i >= 0; i--) {
12621264
if ((regs.bits() & (1 << i)) != 0) {
12631265
stack_offset -= kSystemPointerSize;
12641266
St_d(ToRegister(i), MemOperand(sp, stack_offset));
12651267
}
12661268
}
1267-
addi_d(sp, sp, stack_offset);
12681269
}
12691270

12701271
void MacroAssembler::MultiPush(RegList regs1, RegList regs2) {
12711272
DCHECK((regs1 & regs2).is_empty());
1272-
int16_t stack_offset = 0;
1273+
int16_t num_to_push = regs1.Count() + regs2.Count();
1274+
int16_t stack_offset = num_to_push * kSystemPointerSize;
12731275

1276+
Sub_d(sp, sp, Operand(stack_offset));
12741277
for (int16_t i = kNumRegisters - 1; i >= 0; i--) {
12751278
if ((regs1.bits() & (1 << i)) != 0) {
12761279
stack_offset -= kSystemPointerSize;
@@ -1283,15 +1286,16 @@ void MacroAssembler::MultiPush(RegList regs1, RegList regs2) {
12831286
St_d(ToRegister(i), MemOperand(sp, stack_offset));
12841287
}
12851288
}
1286-
addi_d(sp, sp, stack_offset);
12871289
}
12881290

12891291
void MacroAssembler::MultiPush(RegList regs1, RegList regs2, RegList regs3) {
12901292
DCHECK((regs1 & regs2).is_empty());
12911293
DCHECK((regs1 & regs3).is_empty());
12921294
DCHECK((regs2 & regs3).is_empty());
1293-
int16_t stack_offset = 0;
1295+
int16_t num_to_push = regs1.Count() + regs2.Count() + regs3.Count();
1296+
int16_t stack_offset = num_to_push * kSystemPointerSize;
12941297

1298+
Sub_d(sp, sp, Operand(stack_offset));
12951299
for (int16_t i = kNumRegisters - 1; i >= 0; i--) {
12961300
if ((regs1.bits() & (1 << i)) != 0) {
12971301
stack_offset -= kSystemPointerSize;
@@ -1310,7 +1314,6 @@ void MacroAssembler::MultiPush(RegList regs1, RegList regs2, RegList regs3) {
13101314
St_d(ToRegister(i), MemOperand(sp, stack_offset));
13111315
}
13121316
}
1313-
addi_d(sp, sp, stack_offset);
13141317
}
13151318

13161319
void MacroAssembler::MultiPop(RegList regs) {
@@ -3563,9 +3566,8 @@ void MacroAssembler::EnterFrame(StackFrame::Type type) {
35633566

35643567
void MacroAssembler::LeaveFrame(StackFrame::Type type) {
35653568
ASM_CODE_COMMENT(this);
3566-
addi_d(sp, fp, 2 * kSystemPointerSize);
3567-
Ld_d(ra, MemOperand(fp, 1 * kSystemPointerSize));
3568-
Ld_d(fp, MemOperand(fp, 0 * kSystemPointerSize));
3569+
Move(sp, fp);
3570+
Pop(ra, fp);
35693571
}
35703572

35713573
void MacroAssembler::EnterExitFrame(int stack_space,

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.