@@ -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