blob: e755555dd12c506fd96219b7fcd8ff67b65ecfbb [file]
// Copyright 2026 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
//go:build wasm.stackswitch
#include "go_asm.h"
#include "textflag.h"
// Accessors for the continuation table (see stackswitch_wasm.go). An I32Load
// with an FP operand pushes SP itself, but an I32Store does not: each result
// store takes its address from an explicit Get SP pushed beforehand.
// func wasmContTableSize() int32
TEXT ·wasmContTableSize(SB), NOSPLIT, $0-4
Get SP
TableSize $const_wasmContTable
I32Store ret+0(FP)
RET
// func wasmContTableGrow(delta int32) int32
TEXT ·wasmContTableGrow(SB), NOSPLIT, $0-12
// The operand stack is shown after each instruction.
Get SP // SP: address of the result
RefNull // SP, null: value of the new slots
I32Load delta+0(FP) // SP, null, delta
TableGrow $const_wasmContTable // SP, previous size or -1
I32Store ret+8(FP)
RET