@@ -3506,10 +3506,9 @@ void ReloadParentStack(MacroAssembler* masm, Register promise,
35063506
35073507 Register parent = tmp2;
35083508 __ Move (parent, MemOperand (active_stack, wasm::kStackParentOffset ));
3509- __ StoreRootRelative (IsolateData::active_stack_offset (), parent);
35103509 // Switch stack!
3511- SwitchStacks (masm, ExternalReference::wasm_return_stack (), active_stack ,
3512- nullptr , no_reg, {promise, return_value, context, parent});
3510+ SwitchStacks (masm, ExternalReference::wasm_return_stack (), parent, nullptr ,
3511+ no_reg, {promise, return_value, context, parent});
35133512 LoadJumpBuffer (masm, parent, false );
35143513}
35153514
@@ -3552,12 +3551,13 @@ void SwitchToAllocatedStack(MacroAssembler* masm, Register wasm_instance,
35523551 Register new_wrapper_buffer, Register scratch,
35533552 Label* suspend) {
35543553 ResetWasmJspiFrameStackSlots (masm);
3555- Register parent_stack = new_wrapper_buffer;
3556- __ LoadRootRelative (parent_stack, IsolateData::active_stack_offset ());
3557- __ Move (parent_stack, MemOperand (parent_stack, wasm::kStackParentOffset ));
3558- SwitchStacks (masm, ExternalReference::wasm_start_stack (), parent_stack,
3559- suspend, no_reg, {kWasmImplicitArgRegister , wrapper_buffer});
3560- parent_stack = no_reg;
3554+ Register stack = new_wrapper_buffer;
3555+ __ LoadRootRelative (stack, IsolateData::active_suspender_offset ());
3556+ __ LoadExternalPointerField (
3557+ stack, FieldOperand (stack, WasmSuspenderObject::kStackOffset ),
3558+ kWasmStackMemoryTag , kScratchRegister );
3559+ SwitchStacks (masm, ExternalReference::wasm_start_stack (), stack, suspend,
3560+ no_reg, {kWasmImplicitArgRegister , wrapper_buffer});
35613561 Register target_stack = scratch;
35623562 __ LoadRootRelative (target_stack, IsolateData::active_stack_offset ());
35633563 // Save the old stack's rbp in r9, and use it to access the parameters in
@@ -3915,22 +3915,17 @@ void Builtins::Generate_WasmSuspend(MacroAssembler* masm) {
39153915 ResetWasmJspiFrameStackSlots (masm);
39163916
39173917 Label resume;
3918- Register stack = rbx;
3919- __ LoadRootRelative (stack, IsolateData::active_stack_offset ());
3920-
3921- // Update active stack.
39223918 Register parent = rdx;
39233919 __ LoadProtectedPointerField (
39243920 parent, FieldOperand (suspender, WasmSuspenderObject::kParentOffset ));
39253921 Register target_stack = rcx;
39263922 __ LoadExternalPointerField (
39273923 target_stack, FieldOperand (parent, WasmSuspenderObject::kStackOffset ),
39283924 kWasmStackMemoryTag , kScratchRegister );
3929- __ StoreRootRelative (IsolateData::active_stack_offset (), target_stack);
39303925
39313926 // Switch stacks.
3932- SwitchStacks (masm, ExternalReference::wasm_suspend_stack (), stack, &resume ,
3933- no_reg, {target_stack, suspender, parent});
3927+ SwitchStacks (masm, ExternalReference::wasm_suspend_stack (), target_stack ,
3928+ &resume, no_reg, {target_stack, suspender, parent});
39343929 __ StoreRootRelative (IsolateData::active_suspender_offset (), parent);
39353930 parent = no_reg;
39363931 __ LoadTaggedField (
@@ -4003,8 +3998,7 @@ void Generate_WasmResumeHelper(MacroAssembler* masm, wasm::OnResume on_resume) {
40033998 __ LoadExternalPointerField (
40043999 target_stack, FieldOperand (suspender, WasmSuspenderObject::kStackOffset ),
40054000 kWasmStackMemoryTag , kScratchRegister );
4006- __ StoreRootRelative (IsolateData::active_stack_offset (), target_stack);
4007- SwitchStacks (masm, ExternalReference::wasm_resume_jspi_stack (), active_stack,
4001+ SwitchStacks (masm, ExternalReference::wasm_resume_jspi_stack (), target_stack,
40084002 &suspend, suspender, {target_stack});
40094003 suspender = no_reg;
40104004
@@ -4049,11 +4043,8 @@ void Builtins::Generate_WasmFXResume(MacroAssembler* masm) {
40494043 __ EnterFrame (StackFrame::WASM_STACK_EXIT);
40504044 Register target_stack = WasmFXResumeDescriptor::GetRegisterParameter (0 );
40514045 Label suspend;
4052- Register active_stack = rbx;
4053- __ LoadRootRelative (active_stack, IsolateData::active_stack_offset ());
4054- __ StoreRootRelative (IsolateData::active_stack_offset (), target_stack);
40554046 SwitchStacks (masm, ExternalReference::wasm_resume_wasmfx_stack (),
4056- active_stack , &suspend, no_reg, {target_stack});
4047+ target_stack , &suspend, no_reg, {target_stack});
40574048 LoadJumpBuffer (masm, target_stack, true );
40584049 __ Trap ();
40594050 __ bind (&suspend);
@@ -4067,9 +4058,8 @@ void Builtins::Generate_WasmFXReturn(MacroAssembler* masm) {
40674058 __ LoadRootRelative (active_stack, IsolateData::active_stack_offset ());
40684059 Register parent = rbx;
40694060 __ Move (parent, MemOperand (active_stack, wasm::kStackParentOffset ));
4070- __ StoreRootRelative (IsolateData::active_stack_offset (), parent);
4071- SwitchStacks (masm, ExternalReference::wasm_return_stack (), active_stack,
4072- nullptr , no_reg, {parent});
4061+ SwitchStacks (masm, ExternalReference::wasm_return_stack (), parent, nullptr ,
4062+ no_reg, {parent});
40734063 LoadJumpBuffer (masm, parent, true );
40744064 __ Trap ();
40754065}
0 commit comments