aboutsummaryrefslogtreecommitdiff
path: root/tools/js-optimizer.js
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2012-11-30 11:40:05 -0800
committerAlon Zakai <alonzakai@gmail.com>2012-12-07 14:23:20 -0800
commit3c642441a9cc0082d2e6f9ec412f43d0286f93b9 (patch)
treeba1993c142e28d1fc0094e5cecd3dab52e49ca78 /tools/js-optimizer.js
parentf6b5cdbbe1d117403bbecf91dfb681bc7006543f (diff)
do registerize in asm.js+reloop mode, as an alternative to closure
Diffstat (limited to 'tools/js-optimizer.js')
-rw-r--r--tools/js-optimizer.js7
1 files changed, 6 insertions, 1 deletions
diff --git a/tools/js-optimizer.js b/tools/js-optimizer.js
index 53d1bb31..166843a9 100644
--- a/tools/js-optimizer.js
+++ b/tools/js-optimizer.js
@@ -1203,7 +1203,7 @@ function loopOptimizer(ast) {
// TODO: Consider how this fits in with the rest of the optimization toolchain. Do
// we still need the eliminator? Closure? And in what order? Perhaps just
// closure simple?
-function registerize(ast) {
+function registerize(ast, asm) {
traverseGeneratedFunctions(ast, function(fun) {
// Replace all var definitions with assignments; we will add var definitions at the top after we registerize
// We also mark local variables - i.e., having a var definition
@@ -1371,6 +1371,10 @@ function registerize(ast) {
});
}
+function registerizeAsm(ast) {
+ registerizeAsm(ast, true);
+}
+
// Eliminator aka Expressionizer
//
// The goal of this pass is to eliminate unneeded variables (which represent one of the infinite registers in the LLVM
@@ -1894,6 +1898,7 @@ var passes = {
hoistMultiples: hoistMultiples,
loopOptimizer: loopOptimizer,
registerize: registerize,
+ registerizeAsm: registerizeAsm,
eliminate: eliminate,
eliminateMemSafe: eliminateMemSafe,
eliminateAsm: eliminateAsm,