tiny fix
This commit is contained in:
@@ -27,7 +27,7 @@ func Test_fibonacci(t *testing.T) {
|
||||
{in: 10, exp: 55},
|
||||
{in: 5, exp: 5},
|
||||
} {
|
||||
ret, retTypes, err := vm.ExecExportedFunction("fib", uint64(c.in))
|
||||
ret, retTypes, err := vm.ExecExportedFunction("fibonacci", uint64(c.in))
|
||||
require.NoError(t, err)
|
||||
require.Len(t, ret, len(retTypes))
|
||||
require.Equal(t, wasm.ValueTypeI32, retTypes[0])
|
||||
|
||||
@@ -3,10 +3,10 @@ package main
|
||||
|
||||
func main() {}
|
||||
|
||||
//export fib
|
||||
func fib(in uint32) uint32 {
|
||||
//export fibonacci
|
||||
func fibonacci(in uint32) uint32 {
|
||||
if in <= 1 {
|
||||
return in
|
||||
}
|
||||
return fib(in-1) + fib(in-2)
|
||||
return fibonacci(in-1) + fibonacci(in-2)
|
||||
}
|
||||
|
||||
Binary file not shown.
@@ -141,6 +141,7 @@ func memoryGrow(vm *VirtualMachine) {
|
||||
uint64(n+uint32(len(vm.Memory)/vmPageSize)) > uint64(*(vm.InnerModule.SecMemory[0].Max)) {
|
||||
v := int32(-1)
|
||||
vm.OperandStack.Push(uint64(v))
|
||||
return
|
||||
}
|
||||
|
||||
vm.OperandStack.Push(uint64(len(vm.Memory)) / vmPageSize)
|
||||
|
||||
@@ -404,17 +404,36 @@ func Test_memorySize(t *testing.T) {
|
||||
}
|
||||
|
||||
func Test_memoryGrow(t *testing.T) {
|
||||
vm := &VirtualMachine{
|
||||
ActiveContext: &NativeFunctionContext{},
|
||||
Memory: make([]byte, vmPageSize*2),
|
||||
OperandStack: NewVirtualMachineOperandStack(),
|
||||
InnerModule: &Module{
|
||||
SecMemory: []*MemoryType{{}},
|
||||
},
|
||||
}
|
||||
t.Run("ok", func(t *testing.T) {
|
||||
vm := &VirtualMachine{
|
||||
ActiveContext: &NativeFunctionContext{},
|
||||
Memory: make([]byte, vmPageSize*2),
|
||||
OperandStack: NewVirtualMachineOperandStack(),
|
||||
InnerModule: &Module{
|
||||
SecMemory: []*MemoryType{{}},
|
||||
},
|
||||
}
|
||||
|
||||
vm.OperandStack.Push(5)
|
||||
memoryGrow(vm)
|
||||
assert.Equal(t, uint64(0x2), vm.OperandStack.Pop())
|
||||
assert.Equal(t, 7, len(vm.Memory)/vmPageSize)
|
||||
})
|
||||
|
||||
t.Run("oom", func(t *testing.T) {
|
||||
vm := &VirtualMachine{
|
||||
ActiveContext: &NativeFunctionContext{},
|
||||
Memory: make([]byte, vmPageSize*2),
|
||||
OperandStack: NewVirtualMachineOperandStack(),
|
||||
InnerModule: &Module{
|
||||
SecMemory: []*MemoryType{{Max: uint32Ptr(0)}},
|
||||
},
|
||||
}
|
||||
|
||||
exp := int32(-1)
|
||||
vm.OperandStack.Push(5)
|
||||
memoryGrow(vm)
|
||||
assert.Equal(t, uint64(exp), vm.OperandStack.Pop())
|
||||
})
|
||||
|
||||
vm.OperandStack.Push(5)
|
||||
memoryGrow(vm)
|
||||
assert.Equal(t, uint64(0x2), vm.OperandStack.Pop())
|
||||
assert.Equal(t, 7, len(vm.Memory)/vmPageSize)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user