aboutsummaryrefslogtreecommitdiff
path: root/tools/js-optimizer.js
diff options
context:
space:
mode:
Diffstat (limited to 'tools/js-optimizer.js')
-rw-r--r--tools/js-optimizer.js35
1 files changed, 6 insertions, 29 deletions
diff --git a/tools/js-optimizer.js b/tools/js-optimizer.js
index e567ebff..e5e0d287 100644
--- a/tools/js-optimizer.js
+++ b/tools/js-optimizer.js
@@ -768,32 +768,11 @@ function simplifyExpressions(ast) {
});
}
- function asmOpts(fun) {
- // Add final returns when necessary
- var returnType = null;
- traverse(fun, function(node, type) {
- if (type === 'return' && node[1]) {
- returnType = detectAsmCoercion(node[1]);
- }
- });
- // Add a final return if one is missing.
- if (returnType !== null) {
- var stats = getStatements(fun);
- var last = stats[stats.length-1];
- if (last[0] != 'return') {
- var returnValue = ['num', 0];
- if (returnType === ASM_DOUBLE) returnValue = ['unary-prefix', '+', returnValue];
- stats.push(['return', returnValue]);
- }
- }
- }
-
traverseGeneratedFunctions(ast, function(func) {
simplifyIntegerConversions(func);
simplifyBitops(func);
joinAdditions(func);
// simplifyZeroComp(func); TODO: investigate performance
- if (asm) asmOpts(func);
simplifyNotComps(func);
});
}
@@ -1593,6 +1572,7 @@ function normalizeAsm(func) {
data.vars[name] = detectAsmCoercion(value);
v.length = 1; // make an un-assigning var
} else {
+ assert(j === 0, 'cannot break in the middle');
break outer;
}
}
@@ -1602,6 +1582,8 @@ function normalizeAsm(func) {
while (i < stats.length) {
traverse(stats[i], function(node, type) {
if (type === 'var') {
+ assert(0, 'should be no vars to fix! ' + func[1] + ' : ' + JSON.stringify(node));
+ /*
for (var j = 0; j < node[1].length; j++) {
var v = node[1][j];
var name = v[0];
@@ -1616,12 +1598,7 @@ function normalizeAsm(func) {
}
}
unVarify(node[1], node);
- } else if (type === 'dot') {
- if (node[1][0] === 'name' && node[1][1] === 'Math') {
- // transform Math.max to Math_max; we forward in the latter version
- node[0] = 'name';
- node[1] = 'Math_' + node[2];
- }
+ */
} else if (type === 'call' && node[1][0] === 'function') {
assert(!node[1][1]); // anonymous functions only
data.inlines.push(node[1]);
@@ -3863,8 +3840,8 @@ arguments_ = arguments_.filter(function (arg) {
var src = read(arguments_[0]);
var ast = srcToAst(src);
//printErr(JSON.stringify(ast)); throw 1;
-generatedFunctions = src.indexOf(GENERATED_FUNCTIONS_MARKER) >= 0;
-var extraInfoStart = src.indexOf('// EXTRA_INFO:')
+generatedFunctions = src.lastIndexOf(GENERATED_FUNCTIONS_MARKER) >= 0;
+var extraInfoStart = src.lastIndexOf('// EXTRA_INFO:')
if (extraInfoStart > 0) extraInfo = JSON.parse(src.substr(extraInfoStart + 14));
//printErr(JSON.stringify(extraInfo));