Skip to content

Commit a905bbe

Browse files
zjiazV8 LUCI CQ
authored andcommitted
[loong64][wasmfx] Simplify active stack update
Port commit b67ef5a Change-Id: Ie8ff24df7c22e9914b27161095fef175bf47f47f Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/6993338 Auto-Submit: Zhao Jiazhong <[email protected]> Reviewed-by: Jakob Kummerow <[email protected]> Commit-Queue: Zhao Jiazhong <[email protected]> Cr-Commit-Position: refs/heads/main@{#102837}
1 parent 9e69ec1 commit a905bbe

File tree

1 file changed

+16
-29
lines changed

1 file changed

+16
-29
lines changed

src/builtins/loong64/builtins-loong64.cc

Lines changed: 16 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -3185,12 +3185,9 @@ void ReloadParentStack(MacroAssembler* masm, Register return_reg,
31853185
Register parent = tmp2;
31863186
__ Ld_d(parent, MemOperand(active_stack, wasm::kStackParentOffset));
31873187

3188-
// Update active stack.
3189-
__ StoreRootRelative(IsolateData::active_stack_offset(), parent);
3190-
31913188
// Switch stack!
3192-
SwitchStacks(masm, ExternalReference::wasm_return_stack(), active_stack,
3193-
nullptr, no_reg, {return_reg, return_value, context, parent});
3189+
SwitchStacks(masm, ExternalReference::wasm_return_stack(), parent, nullptr,
3190+
no_reg, {return_reg, return_value, context, parent});
31943191
LoadJumpBuffer(masm, parent, false, tmp3);
31953192
}
31963193

@@ -3425,22 +3422,18 @@ void Builtins::Generate_WasmSuspend(MacroAssembler* masm) {
34253422
ResetWasmJspiFrameStackSlots(masm);
34263423

34273424
Label resume;
3428-
DEFINE_REG(stack);
3429-
__ LoadRootRelative(stack, IsolateData::active_stack_offset());
34303425
DEFINE_REG(scratch);
34313426

3432-
// Update active stack.
34333427
DEFINE_REG(parent);
34343428
__ LoadProtectedPointerField(
34353429
parent, FieldMemOperand(suspender, WasmSuspenderObject::kParentOffset));
34363430
DEFINE_REG(target_stack);
34373431
__ LoadExternalPointerField(
34383432
target_stack, FieldMemOperand(parent, WasmSuspenderObject::kStackOffset),
34393433
kWasmStackMemoryTag);
3440-
__ StoreRootRelative(IsolateData::active_stack_offset(), target_stack);
34413434

3442-
SwitchStacks(masm, ExternalReference::wasm_suspend_stack(), stack, &resume,
3443-
no_reg, {target_stack, suspender, parent});
3435+
SwitchStacks(masm, ExternalReference::wasm_suspend_stack(), target_stack,
3436+
&resume, no_reg, {target_stack, suspender, parent});
34443437
__ StoreRootRelative(IsolateData::active_suspender_offset(), parent);
34453438
__ LoadTaggedField(
34463439
kReturnRegister0,
@@ -3512,11 +3505,8 @@ void Generate_WasmResumeHelper(MacroAssembler* masm, wasm::OnResume on_resume) {
35123505
target_stack,
35133506
FieldMemOperand(suspender, WasmSuspenderObject::kStackOffset),
35143507
kWasmStackMemoryTag);
3515-
3516-
__ StoreRootRelative(IsolateData::active_stack_offset(), target_stack);
3517-
SwitchStacks(masm, ExternalReference::wasm_resume_jspi_stack(), active_stack,
3508+
SwitchStacks(masm, ExternalReference::wasm_resume_jspi_stack(), target_stack,
35183509
&suspend, suspender, {target_stack});
3519-
35203510
regs.ResetExcept(target_stack);
35213511

35223512
// -------------------------------------------
@@ -3563,11 +3553,8 @@ void Builtins::Generate_WasmFXResume(MacroAssembler* masm) {
35633553
__ EnterFrame(StackFrame::WASM_STACK_EXIT);
35643554
Register target_stack = WasmFXResumeDescriptor::GetRegisterParameter(0);
35653555
Label suspend;
3566-
Register active_stack = a0;
3567-
__ LoadRootRelative(active_stack, IsolateData::active_stack_offset());
3568-
__ StoreRootRelative(IsolateData::active_stack_offset(), target_stack);
35693556
SwitchStacks(masm, ExternalReference::wasm_resume_wasmfx_stack(),
3570-
active_stack, &suspend, no_reg, {target_stack});
3557+
target_stack, &suspend, no_reg, {target_stack});
35713558
LoadJumpBuffer(masm, target_stack, true, a1);
35723559
__ Trap();
35733560
__ bind(&suspend);
@@ -3580,9 +3567,8 @@ void Builtins::Generate_WasmFXReturn(MacroAssembler* masm) {
35803567
__ LoadRootRelative(active_stack, IsolateData::active_stack_offset());
35813568
Register parent = a1;
35823569
__ Move(parent, MemOperand(active_stack, wasm::kStackParentOffset));
3583-
__ StoreRootRelative(IsolateData::active_stack_offset(), parent);
3584-
SwitchStacks(masm, ExternalReference::wasm_return_stack(), active_stack,
3585-
nullptr, no_reg, {parent});
3570+
SwitchStacks(masm, ExternalReference::wasm_return_stack(), parent, nullptr,
3571+
no_reg, {parent});
35863572
LoadJumpBuffer(masm, parent, true, a2);
35873573
__ Trap();
35883574
}
@@ -3599,14 +3585,15 @@ void SwitchToAllocatedStack(MacroAssembler* masm, RegisterAllocator& regs,
35993585
Label* suspend) {
36003586
ResetWasmJspiFrameStackSlots(masm);
36013587
DEFINE_SCOPED(scratch)
3602-
DEFINE_REG(parent_stack)
3603-
__ LoadRootRelative(parent_stack, IsolateData::active_stack_offset());
3604-
__ Ld_d(parent_stack, MemOperand(parent_stack, wasm::kStackParentOffset));
3605-
3606-
SwitchStacks(masm, ExternalReference::wasm_start_stack(), parent_stack,
3607-
suspend, no_reg, {wasm_instance, wrapper_buffer});
3588+
DEFINE_REG(stack)
3589+
__ LoadRootRelative(stack, IsolateData::active_suspender_offset());
3590+
__ LoadExternalPointerField(
3591+
stack, FieldMemOperand(stack, WasmSuspenderObject::kStackOffset),
3592+
kWasmStackMemoryTag);
3593+
SwitchStacks(masm, ExternalReference::wasm_start_stack(), stack, suspend,
3594+
no_reg, {wasm_instance, wrapper_buffer});
36083595

3609-
FREE_REG(parent_stack);
3596+
FREE_REG(stack);
36103597
// Save the old stack's fp in t0, and use it to access the parameters in
36113598
// the parent frame.
36123599
regs.Pinned(t1, &original_fp);

0 commit comments

Comments
 (0)