Files

84 lines
1.4 KiB
Go

// Code generated by wasm2go. DO NOT EDIT.
package ncruces
import (
"encoding/binary"
"math"
)
type Module struct {
memory []byte
maxMem int64
}
func New() *Module {
m := new(Module)
m.maxMem = 65536
m.memory = make([]byte, 65536)
return m
}
type Memory = interface {
Slice() *[]byte
Grow(delta, max int64) int64
}
type wasmMemory []byte
func (m *wasmMemory) Slice() *[]byte {
return (*[]byte)(m)
}
func (m *wasmMemory) Grow(delta, max int64) int64 {
return memory_grow((*[]byte)(m), delta, max)
}
func (m *Module) Xbench_mem(v0 int32) int32 {
var v1, v2 int32
v1 = i32(0)
l0:
m.memory[uint64(uint32(v1))] = byte(v1 * i32(31) & i32(255))
v1 = v1 + i32(1)
if uint32(v1) < uint32(v0) {
goto l0
}
v1 = i32(0)
v2 = i32(0)
l1:
{
t0 := int32(load32(m.memory, uint64(uint32(v1))))
v2 = v2 + t0
v1 = v1 + i32(4)
if uint32(v1) < uint32(v0) {
goto l1
}
}
return v2
}
func (m *Module) Xmemory() Memory {
return (*wasmMemory)(&m.memory)
}
//go:nosplit
func i32(x int32) int32 { return x }
//go:nosplit
func load32(mem []byte, addr uint64) uint32 {
return binary.LittleEndian.Uint32(mem[addr:])
}
func memory_grow(mem *[]byte, delta, max int64) int64 {
buf := *mem
len := int64(len(buf))
old := len >> 16
if delta == 0 {
return old
}
new := old + delta
add := new<<16 - len
max = min(max, int64(math.MaxInt)>>16)
if new > max || new < old || add < 0 {
return -1
}
*mem = append(buf, make([]byte, add)...)
return old
}