aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/library.js4
-rw-r--r--tools/js-optimizer.js12
-rw-r--r--tools/test-js-optimizer.js1
3 files changed, 14 insertions, 3 deletions
diff --git a/src/library.js b/src/library.js
index 8c3740b3..277c4574 100644
--- a/src/library.js
+++ b/src/library.js
@@ -2326,9 +2326,9 @@ LibraryManager.library = {
argSize = 4;
break;
default:
- argSize = undefined;
+ argSize = null;
}
- if (argSize !== undefined) textIndex++;
+ if (argSize) textIndex++;
next = {{{ makeGetValue(0, 'textIndex+1', 'i8') }}};
// Handle type specifier.
diff --git a/tools/js-optimizer.js b/tools/js-optimizer.js
index bc993eae..5aeee636 100644
--- a/tools/js-optimizer.js
+++ b/tools/js-optimizer.js
@@ -160,7 +160,6 @@ function unGlobalize(ast) {
// This pass assumes that unGlobalize has been run, so undefined
// is now explicit.
function removeAssignsToUndefined(ast) {
- // TODO: in vars too
traverse(ast, function(node, type) {
if (type == 'assign' && jsonCompare(node[3], ['unary-prefix', 'void', ['num', 0]])) {
return emptyNode();
@@ -173,6 +172,17 @@ function removeAssignsToUndefined(ast) {
});
}
});
+ // cleanup (|x = y = void 0| leaves |x = ;| right now)
+ var modified = true;
+ while (modified) {
+ modified = false;
+ traverse(ast, function(node, type) {
+ if (type == 'assign' && jsonCompare(node[3], emptyNode())) {
+ modified = true;
+ return emptyNode();
+ }
+ });
+ }
}
// Main
diff --git a/tools/test-js-optimizer.js b/tools/test-js-optimizer.js
index 042f4cf9..05e574f9 100644
--- a/tools/test-js-optimizer.js
+++ b/tools/test-js-optimizer.js
@@ -7,6 +7,7 @@ function abc() {
var fleefl;
cheez = 10;
fleefl = x;
+ fleefl = cheez = x;
var waka = x, flake = x, marfoosh = x;
var waka2 = 5, flake2 = x, marfoosh2 = x;
var waka3 = x, flake3 = 5, marfoosh3 = x;