Skip to content

Commit c71e6b1

Browse files
committed
Add test case for full MINIMAL_RUNTIME JS optimizer applyImportAndExportNameChanges pass.
1 parent 0323c72 commit c71e6b1

File tree

3 files changed

+506
-0
lines changed

3 files changed

+506
-0
lines changed
Lines changed: 237 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,237 @@
1+
var Module;
2+
if (!Module) Module = "__EMSCRIPTEN_PRIVATE_MODULE_EXPORT_NAME_SUBSTITUTION__";
3+
var ENVIRONMENT_IS_NODE = typeof process === "object";
4+
if (ENVIRONMENT_IS_NODE) {
5+
var fs = require("fs");
6+
Module["wasm"] = fs.readFileSync(__dirname + "/a.wasm");
7+
}
8+
function out(text) {
9+
console.log(text);
10+
}
11+
function err(text) {
12+
console.error(text);
13+
}
14+
function ready() {
15+
run();
16+
}
17+
function abort(what) {
18+
throw what;
19+
}
20+
var UTF8Decoder = typeof TextDecoder !== "undefined" ? new TextDecoder("utf8") : undefined;
21+
function UTF8ArrayToString(u8Array, idx, maxBytesToRead) {
22+
var endIdx = idx + maxBytesToRead;
23+
var endPtr = idx;
24+
while (u8Array[endPtr] && !(endPtr >= endIdx)) ++endPtr;
25+
if (endPtr - idx > 16 && u8Array.subarray && UTF8Decoder) {
26+
return UTF8Decoder.decode(u8Array.subarray(idx, endPtr));
27+
} else {
28+
var str = "";
29+
while (idx < endPtr) {
30+
var u0 = u8Array[idx++];
31+
if (!(u0 & 128)) {
32+
str += String.fromCharCode(u0);
33+
continue;
34+
}
35+
var u1 = u8Array[idx++] & 63;
36+
if ((u0 & 224) == 192) {
37+
str += String.fromCharCode((u0 & 31) << 6 | u1);
38+
continue;
39+
}
40+
var u2 = u8Array[idx++] & 63;
41+
if ((u0 & 240) == 224) {
42+
u0 = (u0 & 15) << 12 | u1 << 6 | u2;
43+
} else {
44+
u0 = (u0 & 7) << 18 | u1 << 12 | u2 << 6 | u8Array[idx++] & 63;
45+
}
46+
if (u0 < 65536) {
47+
str += String.fromCharCode(u0);
48+
} else {
49+
var ch = u0 - 65536;
50+
str += String.fromCharCode(55296 | ch >> 10, 56320 | ch & 1023);
51+
}
52+
}
53+
}
54+
return str;
55+
}
56+
function UTF8ToString(ptr, maxBytesToRead) {
57+
return ptr ? UTF8ArrayToString(HEAPU8, ptr, maxBytesToRead) : "";
58+
}
59+
var TOTAL_MEMORY = 16777216, STATIC_BASE = 1024, DYNAMICTOP_PTR = 6016;
60+
var wasmMaximumMemory = TOTAL_MEMORY;
61+
var wasmMemory = new WebAssembly.Memory({
62+
"initial": TOTAL_MEMORY >> 16,
63+
"maximum": wasmMaximumMemory >> 16
64+
});
65+
var buffer = wasmMemory.buffer;
66+
var HEAP8 = new Int8Array(buffer);
67+
var HEAP16 = new Int16Array(buffer);
68+
var HEAP32 = new Int32Array(buffer);
69+
var HEAPU8 = new Uint8Array(buffer);
70+
var HEAPU16 = new Uint16Array(buffer);
71+
var HEAPU32 = new Uint32Array(buffer);
72+
var HEAPF32 = new Float32Array(buffer);
73+
var HEAPF64 = new Float64Array(buffer);
74+
HEAP32[DYNAMICTOP_PTR >> 2] = 5249152;
75+
var SYSCALLS = {
76+
buffers: [ null, [], [] ],
77+
printChar: (function(stream, curr) {
78+
var buffer = SYSCALLS.buffers[stream];
79+
if (curr === 0 || curr === 10) {
80+
(stream === 1 ? out : err)(UTF8ArrayToString(buffer, 0));
81+
buffer.length = 0;
82+
} else {
83+
buffer.push(curr);
84+
}
85+
}),
86+
varargs: 0,
87+
get: (function(varargs) {
88+
SYSCALLS.varargs += 4;
89+
var ret = HEAP32[SYSCALLS.varargs - 4 >> 2];
90+
return ret;
91+
}),
92+
getStr: (function() {
93+
var ret = UTF8ToString(SYSCALLS.get());
94+
return ret;
95+
}),
96+
get64: (function() {
97+
var low = SYSCALLS.get(), high = SYSCALLS.get();
98+
return low;
99+
}),
100+
getZero: (function() {
101+
SYSCALLS.get();
102+
})
103+
};
104+
function ___syscall140(which, varargs) {
105+
SYSCALLS.varargs = varargs;
106+
try {
107+
var stream = SYSCALLS.getStreamFromFD(), offset_high = SYSCALLS.get(), offset_low = SYSCALLS.get(), result = SYSCALLS.get(), whence = SYSCALLS.get();
108+
var offset = offset_low;
109+
FS.llseek(stream, offset, whence);
110+
HEAP32[result >> 2] = stream.position;
111+
if (stream.getdents && offset === 0 && whence === 0) stream.getdents = null;
112+
return 0;
113+
} catch (e) {
114+
if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e);
115+
return -e.errno;
116+
}
117+
}
118+
function ___syscall146(which, varargs) {
119+
SYSCALLS.varargs = varargs;
120+
try {
121+
var stream = SYSCALLS.get(), iov = SYSCALLS.get(), iovcnt = SYSCALLS.get();
122+
var ret = 0;
123+
for (var i = 0; i < iovcnt; i++) {
124+
var ptr = HEAP32[iov + i * 8 >> 2];
125+
var len = HEAP32[iov + (i * 8 + 4) >> 2];
126+
for (var j = 0; j < len; j++) {
127+
SYSCALLS.printChar(stream, HEAPU8[ptr + j]);
128+
}
129+
ret += len;
130+
}
131+
return ret;
132+
} catch (e) {
133+
if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e);
134+
return -e.errno;
135+
}
136+
}
137+
function ___syscall54(which, varargs) {
138+
SYSCALLS.varargs = varargs;
139+
try {
140+
return 0;
141+
} catch (e) {
142+
if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e);
143+
return -e.errno;
144+
}
145+
}
146+
function ___syscall6(which, varargs) {
147+
SYSCALLS.varargs = varargs;
148+
try {
149+
var stream = SYSCALLS.getStreamFromFD();
150+
FS.close(stream);
151+
return 0;
152+
} catch (e) {
153+
if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e);
154+
return -e.errno;
155+
}
156+
}
157+
function _emscripten_get_now() {
158+
abort();
159+
}
160+
function _emscripten_random() {
161+
return Math.random();
162+
}
163+
function _emscripten_memcpy_big(dest, src, num) {
164+
HEAPU8.set(HEAPU8.subarray(src, src + num), dest);
165+
}
166+
if (ENVIRONMENT_IS_NODE) {
167+
_emscripten_get_now = function _emscripten_get_now_actual() {
168+
var t = process["hrtime"]();
169+
return t[0] * 1e3 + t[1] / 1e6;
170+
};
171+
} else if (typeof dateNow !== "undefined") {
172+
_emscripten_get_now = dateNow;
173+
} else if (typeof self === "object" && self["performance"] && typeof self["performance"]["now"] === "function") {
174+
_emscripten_get_now = (function() {
175+
return self["performance"]["now"]();
176+
});
177+
} else if (typeof performance === "object" && typeof performance["now"] === "function") {
178+
_emscripten_get_now = (function() {
179+
return performance["now"]();
180+
});
181+
} else {
182+
_emscripten_get_now = Date.now;
183+
}
184+
var asmLibraryArg = {
185+
"b": abort,
186+
"h": ___syscall140,
187+
"a": ___syscall146,
188+
"g": ___syscall54,
189+
"f": ___syscall6,
190+
"e": _emscripten_get_now,
191+
"d": _emscripten_memcpy_big,
192+
"c": _emscripten_random
193+
};
194+
function run() {
195+
var ret = _main();
196+
}
197+
function initRuntime(asm) {
198+
asm["i"]();
199+
}
200+
var env = asmLibraryArg;
201+
env["memory"] = wasmMemory;
202+
env["table"] = new WebAssembly.Table({
203+
"initial": 6,
204+
"maximum": 6,
205+
"element": "anyfunc"
206+
});
207+
env["__memory_base"] = STATIC_BASE;
208+
env["__table_base"] = 0;
209+
var imports = {
210+
"env": env,
211+
"global": {
212+
"NaN": NaN,
213+
"Infinity": Infinity
214+
},
215+
"global.Math": Math,
216+
"asm2wasm": {
217+
"f64-rem": (function(x, y) {
218+
return x % y;
219+
}),
220+
"debugger": (function() {
221+
debugger;
222+
})
223+
}
224+
};
225+
var ___errno_location, _llvm_bswap_i32, _main, _memcpy, _memset, dynCall_ii, dynCall_iiii;
226+
WebAssembly.instantiate(Module["wasm"], imports).then((function(output) {
227+
var asm = output.instance.exports;
228+
___errno_location = asm["j"];
229+
_llvm_bswap_i32 = asm["k"];
230+
_main = asm["l"];
231+
_memcpy = asm["m"];
232+
_memset = asm["n"];
233+
dynCall_ii = asm["o"];
234+
dynCall_iiii = asm["p"];
235+
initRuntime(asm);
236+
ready();
237+
}));

0 commit comments

Comments
 (0)