Closed
Description
According to this #158, I tried it, but I was given an error. My code is:
declare namespace console {
function logi(val: i32): void;
}
@external("env", "logf")
declare function logf(val: f64): void;
console.logi(123);
logf(1e10);
export function add(a: i32, b: i32): i32 {
return a + b;
}
var importObject = {
env: {
// import as @external("env", "logf")
logf(value) {
console.log("logf: " + value);
},
abort(msg, file, line, column) {
console.error("abort called at main.ts:" + line + ":" + column);
}
},
console: {
// import as console.logi
logi(value) {
console.log("logi: " + value);
}
}
}
fetch('dist/module.optimized.wasm')
.then(res => res.arrayBuffer())
.then(bytes => new WebAssembly.Instance(new WebAssembly.Module(bytes),importObject))
.then(mod => {
console.log(mod.exports.add(503,100));
});
(module
(type $iv (func (param i32)))
(type $Fv (func (param f64)))
(type $iii (func (param i32 i32) (result i32)))
(type $v (func))
(import "module" "console.logi" (func $assembly/module/console.logi (param i32)))
(import "env" "logf" (func $assembly/module/logf (param f64)))
(memory $0 0)
(table $0 1 anyfunc)
(elem (i32.const 0) $null)
(export "memory" (memory $0))
(export "table" (table $0))
(export "add" (func $assembly/module/add))
(start $start)
(func $assembly/module/add (; 2 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
get_local $0
get_local $1
i32.add
)
(func $start (; 3 ;) (type $v)
i32.const 123
call $assembly/module/console.logi
f64.const 1e10
call $assembly/module/logf
)
(func $null (; 4 ;) (type $v)
nop
)
)
"scripts": {
"build": "npm run build:untouched && npm run build:optimized",
"build:untouched": "asc assembly/module.ts -t dist/module.untouched.wat -b dist/module.untouched.wasm --validate --sourceMap --measure",
"build:optimized": "asc assembly/module.ts -t dist/module.optimized.wat -b dist/module.optimized.wasm --validate --sourceMap --measure --optimize"
}
Metadata
Metadata
Assignees
Labels
No labels