forked from kozorizki/binaryen
We previously supported a non-standard `(func "name" ...` syntax for declaring functions exported with the quoted name. Since that is not part of the standard text format, drop support for it, replacing it with the standard `(func $name (export "name") ...` syntax instead. Also replace our other usage of the quoted form in our text output, which was where we quoted names containing characters that are not allowed to appear in standard names. To handle that case, adjust our output from `"$name"` to `$"name"`, which is the standards-track way of supporting such names. Also fix how we detect non-standard name characters to match the spec. Update the lit test output generation script to account for these changes, including by making the `$` prefix on names mandatory. This causes the script to stop interpreting declarative element segments with the `(elem declare ...` syntax as being named "declare", so prevent our generated output from regressing by counting "declare" as a name in the script.
67 lines
1.8 KiB
JavaScript
67 lines
1.8 KiB
JavaScript
|
|
function asmFunc(imports) {
|
|
var env = imports.env;
|
|
var memory = env.a;
|
|
var buffer = memory.buffer;
|
|
memory.grow = __wasm_memory_grow;
|
|
var HEAP8 = new Int8Array(buffer);
|
|
var HEAP16 = new Int16Array(buffer);
|
|
var HEAP32 = new Int32Array(buffer);
|
|
var HEAPU8 = new Uint8Array(buffer);
|
|
var HEAPU16 = new Uint16Array(buffer);
|
|
var HEAPU32 = new Uint32Array(buffer);
|
|
var HEAPF32 = new Float32Array(buffer);
|
|
var HEAPF64 = new Float64Array(buffer);
|
|
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 foo() {
|
|
return HEAP32[0 >> 2] | 0 | 0;
|
|
}
|
|
|
|
function __wasm_memory_size() {
|
|
return buffer.byteLength / 65536 | 0;
|
|
}
|
|
|
|
function __wasm_memory_grow(pagesToAdd) {
|
|
pagesToAdd = pagesToAdd | 0;
|
|
var oldPages = __wasm_memory_size() | 0;
|
|
var newPages = oldPages + pagesToAdd | 0;
|
|
if ((oldPages < newPages) && (newPages < 65536)) {
|
|
var newBuffer = new ArrayBuffer(Math_imul(newPages, 65536));
|
|
var newHEAP8 = new Int8Array(newBuffer);
|
|
newHEAP8.set(HEAP8);
|
|
HEAP8 = new Int8Array(newBuffer);
|
|
HEAP16 = new Int16Array(newBuffer);
|
|
HEAP32 = new Int32Array(newBuffer);
|
|
HEAPU8 = new Uint8Array(newBuffer);
|
|
HEAPU16 = new Uint16Array(newBuffer);
|
|
HEAPU32 = new Uint32Array(newBuffer);
|
|
HEAPF32 = new Float32Array(newBuffer);
|
|
HEAPF64 = new Float64Array(newBuffer);
|
|
buffer = newBuffer;
|
|
memory.buffer = buffer;
|
|
}
|
|
return oldPages;
|
|
}
|
|
|
|
return {
|
|
"foo": foo
|
|
};
|
|
}
|
|
|
|
var memasmFunc = new ArrayBuffer(65536);
|
|
var retasmFunc = asmFunc({
|
|
"env": {
|
|
a: { buffer : memasmFunc }
|
|
},
|
|
});
|
|
export var foo = retasmFunc.foo;
|