summaryrefslogtreecommitdiff
path: root/test/wasm2js/tables.2asm.js
diff options
context:
space:
mode:
Diffstat (limited to 'test/wasm2js/tables.2asm.js')
-rw-r--r--test/wasm2js/tables.2asm.js89
1 files changed, 89 insertions, 0 deletions
diff --git a/test/wasm2js/tables.2asm.js b/test/wasm2js/tables.2asm.js
new file mode 100644
index 000000000..a7dd8fdd5
--- /dev/null
+++ b/test/wasm2js/tables.2asm.js
@@ -0,0 +1,89 @@
+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(dest, value, size) {
+ dest = dest | 0;
+ size = size | 0;
+ wasm2js_table_fill(dest, value, size);
+ }
+
+ function table_copy(dest, source, size) {
+ dest = dest | 0;
+ source = source | 0;
+ size = size | 0;
+ wasm2js_table_copy(dest, source, size);
+ }
+
+ 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;