| import * as env from 'env'; |
| |
| |
| function wasm2js_table_grow(value, delta) { |
| // TODO: traps on invalid things |
| var oldSize = FUNCTION_TABLE.length; |
| FUNCTION_TABLE.length = oldSize + delta; |
| if (newSize > oldSize) { |
| __wasm_table_fill(oldSize, value, delta) |
| } |
| return oldSize; |
| } |
| |
| function __wasm_table_fill(dest, value, size) { |
| // TODO: traps on invalid things |
| for (var i = 0; i < size; i++) { |
| FUNCTION_TABLE[dest + i] = value; |
| } |
| } |
| |
| function __wasm_table_copy(dest, source, size) { |
| // TODO: traps on invalid things |
| for (var i = 0; i < size; i++) { |
| FUNCTION_TABLE[dest + i] = FUNCTION_TABLE[source + i]; |
| } |
| } |
| |
| function asmFunc(imports) { |
| var env = imports.env; |
| var FUNCTION_TABLE = env.table; |
| var Math_imul = Math.imul; |
| var Math_fround = Math.fround; |
| var Math_abs = Math.abs; |
| var Math_clz32 = Math.clz32; |
| var Math_min = Math.min; |
| var Math_max = Math.max; |
| var Math_floor = Math.floor; |
| var Math_ceil = Math.ceil; |
| var Math_trunc = Math.trunc; |
| var Math_sqrt = Math.sqrt; |
| function table_get() { |
| return FUNCTION_TABLE[1]; |
| } |
| |
| function table_set() { |
| FUNCTION_TABLE[1] = table_set; |
| } |
| |
| function table_size() { |
| return FUNCTION_TABLE.length | 0; |
| } |
| |
| function table_grow() { |
| return wasm2js_table_grow(table_grow, 42) | 0; |
| } |
| |
| function table_fill($0, $1, $2) { |
| $0 = $0 | 0; |
| $2 = $2 | 0; |
| wasm2js_table_fill($0, $1, $2); |
| } |
| |
| function table_copy($0, $1, $2) { |
| $0 = $0 | 0; |
| $1 = $1 | 0; |
| $2 = $2 | 0; |
| wasm2js_table_copy($0, $1, $2); |
| } |
| |
| FUNCTION_TABLE[1] = table_get; |
| return { |
| "table_get": table_get, |
| "table_set": table_set, |
| "table_size": table_size, |
| "table_grow": table_grow, |
| "table_fill": table_fill, |
| "table_copy": table_copy |
| }; |
| } |
| |
| var retasmFunc = asmFunc({ |
| "env": env, |
| }); |
| export var table_get = retasmFunc.table_get; |
| export var table_set = retasmFunc.table_set; |
| export var table_size = retasmFunc.table_size; |
| export var table_grow = retasmFunc.table_grow; |
| export var table_fill = retasmFunc.table_fill; |
| export var table_copy = retasmFunc.table_copy; |