11package dev.suresh.wasm
22
3- import com.dylibso.chicory.experimental.aot.AotMachine
3+ import com.dylibso.chicory.compiler.MachineFactoryCompiler
44import com.dylibso.chicory.runtime.HostFunction
55import com.dylibso.chicory.runtime.Instance
66import com.dylibso.chicory.wasm.Parser
7- import com.dylibso.chicory.wasm.types.ValueType
8- import io.ktor.server.response.respondText
7+ import com.dylibso.chicory.wasm.types.FunctionType
8+ import com.dylibso.chicory.wasm.types.ValType
9+ import io.ktor.server.response.*
910import io.ktor.server.routing.*
1011
1112/* *
@@ -17,7 +18,7 @@ val factWasmInst: Instance by lazy {
1718 val wasmRes = Thread .currentThread().contextClassLoader.getResourceAsStream(" wasm/factorial.wasm" )
1819 // val wasmRes = object {}.javaClass.getResourceAsStream("wasm/factorial.wasm")
1920 val wasmMod = Parser .parse(wasmRes)
20- Instance .builder(wasmMod).withMachineFactory(:: AotMachine ).build()
21+ Instance .builder(wasmMod).withMachineFactory(MachineFactoryCompiler ::compile ).build()
2122}
2223
2324fun Routing.wasm () {
@@ -34,11 +35,12 @@ fun Routing.wasm() {
3435}
3536
3637fun logFunction () =
37- HostFunction (" console" , " log" , listOf (ValueType .I32 , ValueType .I32 ), emptyList()) {
38- instance,
39- args ->
40- val msg = instance.memory().readString(args[0 ].toInt(), args[1 ].toInt())
41- println (" WASM: $msg " )
42- // Value.i32(0)
43- longArrayOf()
44- }
38+ HostFunction (
39+ " console" , " log" , FunctionType .of(listOf (ValType .I32 , ValType .I32 ), emptyList())) {
40+ instance,
41+ args ->
42+ val msg = instance.memory().readString(args[0 ].toInt(), args[1 ].toInt())
43+ println (" WASM: $msg " )
44+ // Value.i32(0)
45+ longArrayOf()
46+ }
0 commit comments