diff options
author | Alon Zakai <alonzakai@gmail.com> | 2011-12-21 22:04:28 -0800 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2011-12-21 22:04:28 -0800 |
commit | d85a66e494512af061f359a575c6be46b68e7e9d (patch) | |
tree | 62951a1fd04cc0fbba6822956a0b419a853a3979 /tools | |
parent | b787b69400f66ee21f2e0acd2691d25751b7e746 (diff) |
fix hoistMultiples bug
Diffstat (limited to 'tools')
-rw-r--r-- | tools/js-optimizer.js | 4 | ||||
-rw-r--r-- | tools/test-js-optimizer-output.js | 4 | ||||
-rw-r--r-- | tools/test-js-optimizer.js | 6 |
3 files changed, 12 insertions, 2 deletions
diff --git a/tools/js-optimizer.js b/tools/js-optimizer.js index a4bb896a..c4de51e3 100644 --- a/tools/js-optimizer.js +++ b/tools/js-optimizer.js @@ -365,7 +365,7 @@ function simplifyExpressionsPost(ast) { function hoistMultiples(ast) { ast[1].forEach(function(node, i) { var type = node[0]; - if (type == 'defun') { + if (type == 'defun' && isGenerated(node[1])) { var statements = node[3]; for (var i = 0; i < statements.length-1; i++) { var modified = false; @@ -435,7 +435,7 @@ function hoistMultiples(ast) { more = false; ast[1].forEach(function(node, i) { var type = node[0]; - if (type == 'defun') { + if (type == 'defun' && isGenerated(node[1])) { traverse(node, function(node, type) { if (type == 'if' && node[2][0] == 'block' && node[2][1].length == 0) { more = true; diff --git a/tools/test-js-optimizer-output.js b/tools/test-js-optimizer-output.js index aa494a05..39b91039 100644 --- a/tools/test-js-optimizer-output.js +++ b/tools/test-js-optimizer-output.js @@ -164,4 +164,8 @@ var FS = { return absolute.length == 1 ? "/" : absolute.join("/"); }) }; +function sleep() { + while (Date.now() - start < msec) {} + return 0; +} // EMSCRIPTEN_GENERATED_FUNCTIONS: ["abc", "xyz", "xyz2", "expr", "loopy", "bits", "maths", "hoisting"] diff --git a/tools/test-js-optimizer.js b/tools/test-js-optimizer.js index 8d10d222..09cc5472 100644 --- a/tools/test-js-optimizer.js +++ b/tools/test-js-optimizer.js @@ -181,4 +181,10 @@ var FS = { return absolute.length == 1 ? '/' : absolute.join('/'); } } +function sleep() { + while (Date.now() - start < msec) { + // Do nothing. This empty block should remain untouched (c.f. _usleep) + } + return 0; +} // EMSCRIPTEN_GENERATED_FUNCTIONS: ["abc", "xyz", "xyz2", "expr", "loopy", "bits", "maths", "hoisting"] |