aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2012-05-16 16:09:11 -0700
committerAlon Zakai <alonzakai@gmail.com>2012-05-16 16:09:11 -0700
commit6403c1b060a3a7e150b858fc69a3d40570c0adfc (patch)
treec2fe0167eab3bd07e2fa4c7be1259b3c7da43caf
parenta7f046807762d234b49f28e47f53d97c8d379e00 (diff)
fix js optimizer bug with not emitting a ';' that lead to joined instructions
-rw-r--r--tools/js-optimizer.js2
-rw-r--r--tools/test-js-optimizer-regs-output.js25
-rw-r--r--tools/test-js-optimizer-regs.js25
3 files changed, 49 insertions, 3 deletions
diff --git a/tools/js-optimizer.js b/tools/js-optimizer.js
index a9704fe4..eda85799 100644
--- a/tools/js-optimizer.js
+++ b/tools/js-optimizer.js
@@ -1163,7 +1163,7 @@ function registerize(ast) {
curr[2] = ['assign', true, ['name', vars[vars.length-1][0]], vars[vars.length-1][1]];
return ret;
} else if (vars.length == 1) {
- return ['assign', true, ['name', vars[0][0]], vars[0][1]];
+ return ['stat', ['assign', true, ['name', vars[0][0]], vars[0][1]]];
} else {
return emptyNode();
}
diff --git a/tools/test-js-optimizer-regs-output.js b/tools/test-js-optimizer-regs-output.js
index 50c67869..16d675b8 100644
--- a/tools/test-js-optimizer-regs-output.js
+++ b/tools/test-js-optimizer-regs-output.js
@@ -174,4 +174,27 @@ function fcntl_open() {
return 0;
return null;
}
-// EMSCRIPTEN_GENERATED_FUNCTIONS: ["test", "primes", "atomic", "fcntl_open"]
+function ex() {
+ var r1, r2;
+ r1 = STACKTOP;
+ STACKTOP += 4;
+ r2 = r1;
+ r1 = _puts(STRING_TABLE._str17 | 0);
+ r1 = r2 | 0;
+ r2 = 0;
+ while (1) {
+ r1 = _printf(STRING_TABLE.__str15 | 0, (tempInt = STACKTOP, STACKTOP += 4, HEAP32[tempInt >> 2] = r2, tempInt));
+ ((function() {
+ try {
+ __THREW__ = false;
+ return __Z5magici(r2);
+ } catch (e) {
+ if (typeof e != "number") throw e;
+ if (ABORT) throw e;
+ __THREW__ = true;
+ return null;
+ }
+ }))();
+ }
+}
+// EMSCRIPTEN_GENERATED_FUNCTIONS: ["test", "primes", "atomic", "fcntl_open", "ex"]
diff --git a/tools/test-js-optimizer-regs.js b/tools/test-js-optimizer-regs.js
index faf1c91b..576e2f8c 100644
--- a/tools/test-js-optimizer-regs.js
+++ b/tools/test-js-optimizer-regs.js
@@ -180,4 +180,27 @@ function fcntl_open() {
return 0;
return null;
}
-// EMSCRIPTEN_GENERATED_FUNCTIONS: ["test", "primes", "atomic", "fcntl_open"]
+function ex() {
+ var __stackBase__ = STACKTOP;
+ STACKTOP += 4;
+ var $e1 = __stackBase__;
+ var $puts = _puts(STRING_TABLE._str17 | 0);
+ var $x41 = $e1 | 0;
+ var $i_04 = 0;
+ while (1) {
+ var $i_04;
+ var $call1 = _printf(STRING_TABLE.__str15 | 0, (tempInt = STACKTOP, STACKTOP += 4, HEAP32[tempInt >> 2] = $i_04, tempInt));
+ ((function() {
+ try {
+ __THREW__ = false;
+ return __Z5magici($i_04);
+ } catch (e) {
+ if (typeof e != "number") throw e;
+ if (ABORT) throw e;
+ __THREW__ = true;
+ return null;
+ }
+ }))();
+ }
+}
+// EMSCRIPTEN_GENERATED_FUNCTIONS: ["test", "primes", "atomic", "fcntl_open", "ex"]