Skip to content

Commit 720134c

Browse files
committed
Fix acorn optimizer to run on MINIMAL_RUNTIME global initializer case
1 parent c71e6b1 commit 720134c

File tree

3 files changed

+27
-113
lines changed

3 files changed

+27
-113
lines changed

tests/optimizer/applyImportAndExportNameChanges2-output.js

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -74,32 +74,32 @@ var HEAPF64 = new Float64Array(buffer);
7474
HEAP32[DYNAMICTOP_PTR >> 2] = 5249152;
7575
var SYSCALLS = {
7676
buffers: [ null, [], [] ],
77-
printChar: (function(stream, curr) {
77+
printChar: function(stream, curr) {
7878
var buffer = SYSCALLS.buffers[stream];
7979
if (curr === 0 || curr === 10) {
8080
(stream === 1 ? out : err)(UTF8ArrayToString(buffer, 0));
8181
buffer.length = 0;
8282
} else {
8383
buffer.push(curr);
8484
}
85-
}),
85+
},
8686
varargs: 0,
87-
get: (function(varargs) {
87+
get: function(varargs) {
8888
SYSCALLS.varargs += 4;
8989
var ret = HEAP32[SYSCALLS.varargs - 4 >> 2];
9090
return ret;
91-
}),
92-
getStr: (function() {
91+
},
92+
getStr: function() {
9393
var ret = UTF8ToString(SYSCALLS.get());
9494
return ret;
95-
}),
96-
get64: (function() {
95+
},
96+
get64: function() {
9797
var low = SYSCALLS.get(), high = SYSCALLS.get();
9898
return low;
99-
}),
100-
getZero: (function() {
99+
},
100+
getZero: function() {
101101
SYSCALLS.get();
102-
})
102+
}
103103
};
104104
function ___syscall140(which, varargs) {
105105
SYSCALLS.varargs = varargs;
@@ -171,13 +171,13 @@ if (ENVIRONMENT_IS_NODE) {
171171
} else if (typeof dateNow !== "undefined") {
172172
_emscripten_get_now = dateNow;
173173
} else if (typeof self === "object" && self["performance"] && typeof self["performance"]["now"] === "function") {
174-
_emscripten_get_now = (function() {
174+
_emscripten_get_now = function() {
175175
return self["performance"]["now"]();
176-
});
176+
};
177177
} else if (typeof performance === "object" && typeof performance["now"] === "function") {
178-
_emscripten_get_now = (function() {
178+
_emscripten_get_now = function() {
179179
return performance["now"]();
180-
});
180+
};
181181
} else {
182182
_emscripten_get_now = Date.now;
183183
}
@@ -210,20 +210,20 @@ var imports = {
210210
"env": env,
211211
"global": {
212212
"NaN": NaN,
213-
"Infinity": Infinity
213+
Infinity: Infinity
214214
},
215215
"global.Math": Math,
216216
"asm2wasm": {
217-
"f64-rem": (function(x, y) {
217+
"f64-rem": function(x, y) {
218218
return x % y;
219-
}),
220-
"debugger": (function() {
219+
},
220+
"debugger": function() {
221221
debugger;
222-
})
222+
}
223223
}
224224
};
225225
var ___errno_location, _llvm_bswap_i32, _main, _memcpy, _memset, dynCall_ii, dynCall_iiii;
226-
WebAssembly.instantiate(Module["wasm"], imports).then((function(output) {
226+
WebAssembly.instantiate(Module["wasm"], imports).then(function(output) {
227227
var asm = output.instance.exports;
228228
___errno_location = asm["j"];
229229
_llvm_bswap_i32 = asm["k"];
@@ -234,4 +234,4 @@ WebAssembly.instantiate(Module["wasm"], imports).then((function(output) {
234234
dynCall_iiii = asm["p"];
235235
initRuntime(asm);
236236
ready();
237-
}));
237+
});

tests/test_other.py

Lines changed: 0 additions & 92 deletions
Original file line numberDiff line numberDiff line change
@@ -2109,98 +2109,6 @@ def test_js_optimizer(self):
21092109
ACORN_PASSES = ['JSDCE', 'AJSDCE', 'applyImportAndExportNameChanges', 'emitDCEGraph', 'applyDCEGraphRemovals']
21102110
for input, expected, passes in [
21112111

2112-
(path_from_root('tests', 'optimizer', 'eliminateDeadGlobals.js'), open(path_from_root('tests', 'optimizer', 'eliminateDeadGlobals-output.js')).read(),
2113-
['eliminateDeadGlobals']),
2114-
(path_from_root('tests', 'optimizer', 'test-js-optimizer.js'), open(path_from_root('tests', 'optimizer', 'test-js-optimizer-output.js')).read(),
2115-
['hoistMultiples', 'removeAssignsToUndefined', 'simplifyExpressions']),
2116-
(path_from_root('tests', 'optimizer', 'test-js-optimizer-asm.js'), open(path_from_root('tests', 'optimizer', 'test-js-optimizer-asm-output.js')).read(),
2117-
['asm', 'simplifyExpressions']),
2118-
(path_from_root('tests', 'optimizer', 'test-js-optimizer-si.js'), open(path_from_root('tests', 'optimizer', 'test-js-optimizer-si-output.js')).read(),
2119-
['simplifyIfs']),
2120-
(path_from_root('tests', 'optimizer', 'test-js-optimizer-regs.js'), open(path_from_root('tests', 'optimizer', 'test-js-optimizer-regs-output.js')).read(),
2121-
['registerize']),
2122-
(path_from_root('tests', 'optimizer', 'eliminator-test.js'), open(path_from_root('tests', 'optimizer', 'eliminator-test-output.js')).read(),
2123-
['eliminate']),
2124-
(path_from_root('tests', 'optimizer', 'safe-eliminator-test.js'), open(path_from_root('tests', 'optimizer', 'safe-eliminator-test-output.js')).read(),
2125-
['eliminateMemSafe']),
2126-
(path_from_root('tests', 'optimizer', 'asm-eliminator-test.js'), open(path_from_root('tests', 'optimizer', 'asm-eliminator-test-output.js')).read(),
2127-
['asm', 'eliminate']),
2128-
(path_from_root('tests', 'optimizer', 'test-js-optimizer-asm-regs.js'), open(path_from_root('tests', 'optimizer', 'test-js-optimizer-asm-regs-output.js')).read(),
2129-
['asm', 'registerize']),
2130-
(path_from_root('tests', 'optimizer', 'test-js-optimizer-asm-regs-harder.js'), [open(path_from_root('tests', 'optimizer', 'test-js-optimizer-asm-regs-harder-output.js')).read(), open(path_from_root('tests', 'optimizer', 'test-js-optimizer-asm-regs-harder-output2.js')).read(), open(path_from_root('tests', 'optimizer', 'test-js-optimizer-asm-regs-harder-output3.js')).read()],
2131-
['asm', 'registerizeHarder']),
2132-
(path_from_root('tests', 'optimizer', 'test-js-optimizer-asm-regs-min.js'), open(path_from_root('tests', 'optimizer', 'test-js-optimizer-asm-regs-min-output.js')).read(),
2133-
['asm', 'registerize', 'minifyLocals']),
2134-
(path_from_root('tests', 'optimizer', 'test-js-optimizer-asm-pre.js'), [open(path_from_root('tests', 'optimizer', 'test-js-optimizer-asm-pre-output.js')).read(), open(path_from_root('tests', 'optimizer', 'test-js-optimizer-asm-pre-output2.js')).read()],
2135-
['asm', 'simplifyExpressions']),
2136-
(path_from_root('tests', 'optimizer', 'test-js-optimizer-asm-pre-f32.js'), open(path_from_root('tests', 'optimizer', 'test-js-optimizer-asm-pre-output-f32.js')).read(),
2137-
['asm', 'asmPreciseF32', 'simplifyExpressions', 'optimizeFrounds']),
2138-
(path_from_root('tests', 'optimizer', 'test-js-optimizer-asm-pre-f32.js'), open(path_from_root('tests', 'optimizer', 'test-js-optimizer-asm-pre-output-f32-nosimp.js')).read(),
2139-
['asm', 'asmPreciseF32', 'optimizeFrounds']),
2140-
(path_from_root('tests', 'optimizer', 'test-reduce-dead-float-return.js'), open(path_from_root('tests', 'optimizer', 'test-reduce-dead-float-return-output.js')).read(),
2141-
['asm', 'optimizeFrounds', 'registerizeHarder']),
2142-
(path_from_root('tests', 'optimizer', 'test-no-reduce-dead-float-return-to-nothing.js'), open(path_from_root('tests', 'optimizer', 'test-no-reduce-dead-float-return-to-nothing-output.js')).read(),
2143-
['asm', 'registerizeHarder']),
2144-
(path_from_root('tests', 'optimizer', 'test-js-optimizer-asm-last.js'), [open(path_from_root('tests', 'optimizer', 'test-js-optimizer-asm-lastOpts-output.js')).read(), open(path_from_root('tests', 'optimizer', 'test-js-optimizer-asm-lastOpts-output2.js')).read(), open(path_from_root('tests', 'optimizer', 'test-js-optimizer-asm-lastOpts-output3.js')).read()],
2145-
['asm', 'asmLastOpts']),
2146-
(path_from_root('tests', 'optimizer', 'asmLastOpts.js'), open(path_from_root('tests', 'optimizer', 'asmLastOpts-output.js')).read(),
2147-
['asm', 'asmLastOpts']),
2148-
(path_from_root('tests', 'optimizer', 'test-js-optimizer-asm-last.js'), [open(path_from_root('tests', 'optimizer', 'test-js-optimizer-asm-last-output.js')).read(), open(path_from_root('tests', 'optimizer', 'test-js-optimizer-asm-last-output2.js')).read(), open(path_from_root('tests', 'optimizer', 'test-js-optimizer-asm-last-output3.js')).read()],
2149-
['asm', 'asmLastOpts', 'last']),
2150-
(path_from_root('tests', 'optimizer', 'test-js-optimizer-asm-relocate.js'), open(path_from_root('tests', 'optimizer', 'test-js-optimizer-asm-relocate-output.js')).read(),
2151-
['asm', 'relocate']),
2152-
(path_from_root('tests', 'optimizer', 'test-js-optimizer-asm-outline1.js'), open(path_from_root('tests', 'optimizer', 'test-js-optimizer-asm-outline1-output.js')).read(),
2153-
['asm', 'outline']),
2154-
(path_from_root('tests', 'optimizer', 'test-js-optimizer-asm-outline2.js'), open(path_from_root('tests', 'optimizer', 'test-js-optimizer-asm-outline2-output.js')).read(),
2155-
['asm', 'outline']),
2156-
(path_from_root('tests', 'optimizer', 'test-js-optimizer-asm-outline3.js'), open(path_from_root('tests', 'optimizer', 'test-js-optimizer-asm-outline3-output.js')).read(),
2157-
['asm', 'outline']),
2158-
(path_from_root('tests', 'optimizer', 'test-js-optimizer-asm-outline4.js'), open(path_from_root('tests', 'optimizer', 'test-js-optimizer-asm-outline4-output.js')).read(),
2159-
['asm', 'outline']),
2160-
(path_from_root('tests', 'optimizer', 'test-js-optimizer-asm-minlast.js'), open(path_from_root('tests', 'optimizer', 'test-js-optimizer-asm-minlast-output.js')).read(),
2161-
['asm', 'minifyWhitespace', 'asmLastOpts', 'last']),
2162-
(path_from_root('tests', 'optimizer', 'test-js-optimizer-shiftsAggressive.js'), open(path_from_root('tests', 'optimizer', 'test-js-optimizer-shiftsAggressive-output.js')).read(),
2163-
['asm', 'aggressiveVariableElimination']),
2164-
(path_from_root('tests', 'optimizer', 'test-js-optimizer-localCSE.js'), open(path_from_root('tests', 'optimizer', 'test-js-optimizer-localCSE-output.js')).read(),
2165-
['asm', 'localCSE']),
2166-
(path_from_root('tests', 'optimizer', 'test-js-optimizer-ensureLabelSet.js'), open(path_from_root('tests', 'optimizer', 'test-js-optimizer-ensureLabelSet-output.js')).read(),
2167-
['asm', 'ensureLabelSet']),
2168-
(path_from_root('tests', 'optimizer', '3154.js'), open(path_from_root('tests', 'optimizer', '3154-output.js')).read(),
2169-
['asm', 'eliminate', 'registerize', 'asmLastOpts', 'last']),
2170-
(path_from_root('tests', 'optimizer', 'simd.js'), open(path_from_root('tests', 'optimizer', 'simd-output.js')).read(),
2171-
['asm', 'eliminate']), # eliminate, just enough to trigger asm normalization/denormalization
2172-
(path_from_root('tests', 'optimizer', 'simd.js'), open(path_from_root('tests', 'optimizer', 'simd-output-memSafe.js')).read(),
2173-
['asm', 'eliminateMemSafe']),
2174-
(path_from_root('tests', 'optimizer', 'safeLabelSetting.js'), open(path_from_root('tests', 'optimizer', 'safeLabelSetting-output.js')).read(),
2175-
['asm', 'safeLabelSetting']), # eliminate, just enough to trigger asm normalization/denormalization
2176-
(path_from_root('tests', 'optimizer', 'null_if.js'), [open(path_from_root('tests', 'optimizer', 'null_if-output.js')).read(), open(path_from_root('tests', 'optimizer', 'null_if-output2.js')).read()],
2177-
['asm', 'registerizeHarder', 'asmLastOpts', 'minifyWhitespace']), # issue 3520
2178-
(path_from_root('tests', 'optimizer', 'null_else.js'), [open(path_from_root('tests', 'optimizer', 'null_else-output.js')).read(), open(path_from_root('tests', 'optimizer', 'null_else-output2.js')).read()],
2179-
['asm', 'registerizeHarder', 'asmLastOpts', 'minifyWhitespace']), # issue 3549
2180-
(path_from_root('tests', 'optimizer', 'test-js-optimizer-splitMemory.js'), open(path_from_root('tests', 'optimizer', 'test-js-optimizer-splitMemory-output.js')).read(),
2181-
['splitMemory']),
2182-
(path_from_root('tests', 'optimizer', 'JSDCE.js'), open(path_from_root('tests', 'optimizer', 'JSDCE-output.js')).read(),
2183-
['JSDCE']),
2184-
(path_from_root('tests', 'optimizer', 'JSDCE-hasOwnProperty.js'), open(path_from_root('tests', 'optimizer', 'JSDCE-hasOwnProperty-output.js')).read(),
2185-
['JSDCE']),
2186-
(path_from_root('tests', 'optimizer', 'JSDCE-fors.js'), open(path_from_root('tests', 'optimizer', 'JSDCE-fors-output.js')).read(),
2187-
['JSDCE']),
2188-
(path_from_root('tests', 'optimizer', 'AJSDCE.js'), open(path_from_root('tests', 'optimizer', 'AJSDCE-output.js')).read(),
2189-
['AJSDCE']),
2190-
(path_from_root('tests', 'optimizer', 'emitDCEGraph.js'), open(path_from_root('tests', 'optimizer', 'emitDCEGraph-output.js')).read(),
2191-
['emitDCEGraph', 'noPrint']),
2192-
(path_from_root('tests', 'optimizer', 'emitDCEGraph2.js'), open(path_from_root('tests', 'optimizer', 'emitDCEGraph2-output.js')).read(),
2193-
['emitDCEGraph', 'noPrint']),
2194-
(path_from_root('tests', 'optimizer', 'emitDCEGraph3.js'), open(path_from_root('tests', 'optimizer', 'emitDCEGraph3-output.js')).read(),
2195-
['emitDCEGraph', 'noPrint']),
2196-
(path_from_root('tests', 'optimizer', 'emitDCEGraph4.js'), open(path_from_root('tests', 'optimizer', 'emitDCEGraph4-output.js')).read(),
2197-
['emitDCEGraph', 'noPrint']),
2198-
(path_from_root('tests', 'optimizer', 'emitDCEGraph5.js'), open(path_from_root('tests', 'optimizer', 'emitDCEGraph5-output.js')).read(),
2199-
['emitDCEGraph', 'noPrint']),
2200-
(path_from_root('tests', 'optimizer', 'applyDCEGraphRemovals.js'), open(path_from_root('tests', 'optimizer', 'applyDCEGraphRemovals-output.js')).read(),
2201-
['applyDCEGraphRemovals']),
2202-
(path_from_root('tests', 'optimizer', 'applyImportAndExportNameChanges.js'), open(path_from_root('tests', 'optimizer', 'applyImportAndExportNameChanges-output.js')).read(),
2203-
['applyImportAndExportNameChanges']),
22042112
(path_from_root('tests', 'optimizer', 'applyImportAndExportNameChanges2.js'), open(path_from_root('tests', 'optimizer', 'applyImportAndExportNameChanges2-output.js')).read(),
22052113
['applyImportAndExportNameChanges']),
22062114
(path_from_root('tests', 'optimizer', 'detectSign-modulus-emterpretify.js'), open(path_from_root('tests', 'optimizer', 'detectSign-modulus-emterpretify-output.js')).read(),

tools/acorn-optimizer.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -451,6 +451,12 @@ function applyImportAndExportNameChanges(ast) {
451451
if (mapping[name]) {
452452
setLiteralValue(prop, mapping[name]);
453453
}
454+
} else if (isAsmUse(node)) {
455+
var prop = node.property;
456+
var name = prop.value;
457+
if (mapping[name]) {
458+
setLiteralValue(prop, mapping[name]);
459+
}
454460
}
455461
});
456462
}

0 commit comments

Comments
 (0)