aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2013-08-09 16:30:13 -0700
committerAlon Zakai <alonzakai@gmail.com>2013-08-09 16:30:13 -0700
commit852bfa71be2246d74f3c7ca456321b174ff2d6d9 (patch)
tree701ff2149e6376c29b9bd9fecb8ce85762dd5ea8
parent459b3a24ec90f474bd491c860247d6193cbef329 (diff)
sort spills and unspills in outliner
-rw-r--r--tools/js-optimizer.js29
-rw-r--r--tools/test-js-optimizer-asm-outline1-output.js84
-rw-r--r--tools/test-js-optimizer-asm-outline2-output.js66
3 files changed, 94 insertions, 85 deletions
diff --git a/tools/js-optimizer.js b/tools/js-optimizer.js
index 3e7926b7..5f1c6df8 100644
--- a/tools/js-optimizer.js
+++ b/tools/js-optimizer.js
@@ -3241,21 +3241,29 @@ function outline(ast) {
}
});
var reps = [];
- // wipe out control variable
- reps.push(['stat', makeAssign(makeStackAccess(ASM_INT, asmData.controlStackPos(outlineIndex)), ['num', 0])]);
- reps.push(['stat', makeAssign(makeStackAccess(ASM_INT, asmData.controlDataStackPos(outlineIndex)), ['num', 0])]); // XXX not really needed
- // add spills and reads before and after the call to the outlined code, and in the outlined code itself
- keys(setUnion(codeInfo.reads, codeInfo.writes)).forEach(function(v) {
+ // add spills
+ function orderFunc(x, y) {
+ return (asmData.stackPos[x] - asmData.stackPos[y]) || x.localeCompare(y);
+ }
+ var sortedReadsAndWrites = keys(setUnion(codeInfo.reads, codeInfo.writes)).sort(orderFunc);
+ var sortedWrites = keys(codeInfo.writes).sort(orderFunc);
+ sortedReadsAndWrites.forEach(function(v) {
if (!(v in owned)) {
reps.push(['stat', ['assign', true, ['sub', ['name', getAsmType(v, asmData) == ASM_INT ? 'HEAP32' : 'HEAPF32'], ['binary', '>>', ['binary', '+', ['name', 'sp'], ['num', asmData.stackPos[v]]], ['num', '2']]], ['name', v]]]);
}
});
+ // wipe out control variable
+ reps.push(['stat', makeAssign(makeStackAccess(ASM_INT, asmData.controlStackPos(outlineIndex)), ['num', 0])]);
+ reps.push(['stat', makeAssign(makeStackAccess(ASM_INT, asmData.controlDataStackPos(outlineIndex)), ['num', 0])]); // XXX not really needed
+ // do the call
reps.push(['stat', ['call', ['name', newIdent], [['name', 'sp']]]]);
- for (var v in codeInfo.writes) {
+ // add unspills
+ sortedWrites.forEach(function(v) {
if (!(v in owned)) {
reps.push(['stat', ['assign', true, ['name', v], makeAsmCoercion(['sub', ['name', getAsmType(v, asmData) == ASM_INT ? 'HEAP32' : 'HEAPF32'], ['binary', '>>', ['binary', '+', ['name', 'sp'], ['num', asmData.stackPos[v]]], ['num', '2']]], getAsmType(v, asmData))]]);
}
- }
+ });
+
// Generate new function
if (codeInfo.hasReturn || codeInfo.hasReturnInt || codeInfo.hasReturnDouble || codeInfo.hasBreak || codeInfo.hasContinue) {
// we need to capture all control flow using a top-level labeled one-time loop in the outlined function
@@ -3389,16 +3397,17 @@ function outline(ast) {
}
}
// add spills and unspills in outlined code outside the OL loop
- keys(setUnion(codeInfo.reads, codeInfo.writes)).forEach(function(v) {
+ sortedReadsAndWrites.reverse();
+ sortedReadsAndWrites.forEach(function(v) {
if (!(v in owned)) {
code.unshift(['stat', ['assign', true, ['name', v], makeAsmCoercion(['sub', ['name', getAsmType(v, asmData) == ASM_INT ? 'HEAP32' : 'HEAPF32'], ['binary', '>>', ['binary', '+', ['name', 'sp'], ['num', asmData.stackPos[v]]], ['num', '2']]], getAsmType(v, asmData))]]);
}
});
- for (var v in codeInfo.writes) {
+ sortedWrites.forEach(function(v) {
if (!(v in owned)) {
code.push(['stat', ['assign', true, ['sub', ['name', getAsmType(v, asmData) == ASM_INT ? 'HEAP32' : 'HEAPF32'], ['binary', '>>', ['binary', '+', ['name', 'sp'], ['num', asmData.stackPos[v]]], ['num', '2']]], ['name', v]]]);
}
- }
+ });
// finalize
var newFunc = ['defun', newIdent, ['sp'], code];
var newAsmData = { params: { sp: ASM_INT }, vars: {} };
diff --git a/tools/test-js-optimizer-asm-outline1-output.js b/tools/test-js-optimizer-asm-outline1-output.js
index 5027f680..de0747f9 100644
--- a/tools/test-js-optimizer-asm-outline1-output.js
+++ b/tools/test-js-optimizer-asm-outline1-output.js
@@ -170,15 +170,15 @@ function vars(x, y) {
var sp = 0;
sp = STACKTOP;
STACKTOP = STACKTOP + 152 | 0;
+ HEAP32[sp + 8 >> 2] = x;
+ HEAPF32[sp + 16 >> 2] = y;
HEAP32[sp + 32 >> 2] = 0;
HEAP32[sp + 36 >> 2] = 0;
+ vars$1(sp);
HEAP32[sp + 8 >> 2] = x;
HEAPF32[sp + 16 >> 2] = y;
- vars$1(sp);
HEAP32[sp + 24 >> 2] = 0;
HEAP32[sp + 28 >> 2] = 0;
- HEAP32[sp + 8 >> 2] = x;
- HEAPF32[sp + 16 >> 2] = y;
vars$0(sp);
STACKTOP = sp;
}
@@ -192,10 +192,10 @@ function vars2(x, y) {
b = y * x;
a = c(1 + a);
b = c(2 + b);
- HEAP32[sp + 40 >> 2] = 0;
- HEAP32[sp + 44 >> 2] = 0;
HEAP32[sp + 24 >> 2] = a;
HEAPF32[sp + 32 >> 2] = b;
+ HEAP32[sp + 40 >> 2] = 0;
+ HEAP32[sp + 44 >> 2] = 0;
vars2$0(sp);
a = HEAP32[sp + 24 >> 2] | 0;
b = +HEAPF32[sp + 32 >> 2];
@@ -207,18 +207,18 @@ function vars3(x, y) {
var a = 0, sp = 0;
sp = STACKTOP;
STACKTOP = STACKTOP + 160 | 0;
- HEAP32[sp + 40 >> 2] = 0;
- HEAP32[sp + 44 >> 2] = 0;
- HEAP32[sp + 24 >> 2] = a;
HEAP32[sp + 8 >> 2] = x;
HEAPF32[sp + 16 >> 2] = y;
+ HEAP32[sp + 24 >> 2] = a;
+ HEAP32[sp + 40 >> 2] = 0;
+ HEAP32[sp + 44 >> 2] = 0;
vars3$1(sp);
a = HEAP32[sp + 24 >> 2] | 0;
+ HEAP32[sp + 8 >> 2] = x;
+ HEAPF32[sp + 16 >> 2] = y;
+ HEAP32[sp + 24 >> 2] = a;
HEAP32[sp + 32 >> 2] = 0;
HEAP32[sp + 36 >> 2] = 0;
- HEAP32[sp + 24 >> 2] = a;
- HEAPF32[sp + 16 >> 2] = y;
- HEAP32[sp + 8 >> 2] = x;
vars3$0(sp);
a = HEAP32[sp + 24 >> 2] | 0;
STACKTOP = sp;
@@ -230,20 +230,20 @@ function vars4(x, y) {
sp = STACKTOP;
STACKTOP = STACKTOP + 168 | 0;
a = x + y;
- HEAP32[sp + 48 >> 2] = 0;
- HEAP32[sp + 52 >> 2] = 0;
- HEAPF32[sp + 16 >> 2] = y;
HEAP32[sp + 8 >> 2] = x;
+ HEAPF32[sp + 16 >> 2] = y;
HEAP32[sp + 24 >> 2] = a;
HEAPF32[sp + 32 >> 2] = b;
+ HEAP32[sp + 48 >> 2] = 0;
+ HEAP32[sp + 52 >> 2] = 0;
vars4$1(sp);
- b = +HEAPF32[sp + 32 >> 2];
a = HEAP32[sp + 24 >> 2] | 0;
- HEAP32[sp + 40 >> 2] = 0;
- HEAP32[sp + 44 >> 2] = 0;
- HEAP32[sp + 24 >> 2] = a;
+ b = +HEAPF32[sp + 32 >> 2];
HEAP32[sp + 8 >> 2] = x;
+ HEAP32[sp + 24 >> 2] = a;
HEAPF32[sp + 32 >> 2] = b;
+ HEAP32[sp + 40 >> 2] = 0;
+ HEAP32[sp + 44 >> 2] = 0;
vars4$0(sp);
a = HEAP32[sp + 24 >> 2] | 0;
b = +HEAPF32[sp + 32 >> 2];
@@ -256,19 +256,19 @@ function vars_w_stack(x, y) {
sp = STACKTOP;
STACKTOP = STACKTOP + 208 | 0;
a = x + y;
- HEAP32[sp + 72 >> 2] = 0;
- HEAP32[sp + 76 >> 2] = 0;
- HEAPF32[sp + 32 >> 2] = y;
HEAP32[sp + 24 >> 2] = x;
+ HEAPF32[sp + 32 >> 2] = y;
HEAP32[sp + 40 >> 2] = a;
HEAPF32[sp + 48 >> 2] = b;
+ HEAP32[sp + 72 >> 2] = 0;
+ HEAP32[sp + 76 >> 2] = 0;
vars_w_stack$1(sp);
- b = +HEAPF32[sp + 48 >> 2];
a = HEAP32[sp + 40 >> 2] | 0;
- HEAP32[sp + 64 >> 2] = 0;
- HEAP32[sp + 68 >> 2] = 0;
+ b = +HEAPF32[sp + 48 >> 2];
HEAP32[sp + 40 >> 2] = a;
HEAPF32[sp + 48 >> 2] = b;
+ HEAP32[sp + 64 >> 2] = 0;
+ HEAP32[sp + 68 >> 2] = 0;
vars_w_stack$0(sp);
a = HEAP32[sp + 40 >> 2] | 0;
b = +HEAPF32[sp + 48 >> 2];
@@ -278,34 +278,34 @@ function chain() {
sp = STACKTOP;
STACKTOP = STACKTOP + 336 | 0;
helper$0 = 1;
+ HEAP32[sp + 8 >> 2] = helper$0;
HEAP32[sp + 56 >> 2] = 0;
HEAP32[sp + 60 >> 2] = 0;
- HEAP32[sp + 8 >> 2] = helper$0;
chain$5(sp);
helper$0 = HEAP32[sp + 8 >> 2] | 0;
+ HEAP32[sp + 8 >> 2] = helper$0;
HEAP32[sp + 48 >> 2] = 0;
HEAP32[sp + 52 >> 2] = 0;
- HEAP32[sp + 8 >> 2] = helper$0;
chain$4(sp);
helper$0 = HEAP32[sp + 8 >> 2] | 0;
+ HEAP32[sp + 8 >> 2] = helper$0;
HEAP32[sp + 40 >> 2] = 0;
HEAP32[sp + 44 >> 2] = 0;
- HEAP32[sp + 8 >> 2] = helper$0;
chain$3(sp);
helper$0 = HEAP32[sp + 8 >> 2] | 0;
+ HEAP32[sp + 8 >> 2] = helper$0;
HEAP32[sp + 32 >> 2] = 0;
HEAP32[sp + 36 >> 2] = 0;
- HEAP32[sp + 8 >> 2] = helper$0;
chain$2(sp);
helper$0 = HEAP32[sp + 8 >> 2] | 0;
+ HEAP32[sp + 8 >> 2] = helper$0;
HEAP32[sp + 24 >> 2] = 0;
HEAP32[sp + 28 >> 2] = 0;
- HEAP32[sp + 8 >> 2] = helper$0;
chain$1(sp);
helper$0 = HEAP32[sp + 8 >> 2] | 0;
+ HEAP32[sp + 8 >> 2] = helper$0;
HEAP32[sp + 16 >> 2] = 0;
HEAP32[sp + 20 >> 2] = 0;
- HEAP32[sp + 8 >> 2] = helper$0;
chain$0(sp);
helper$0 = HEAP32[sp + 8 >> 2] | 0;
STACKTOP = sp;
@@ -472,8 +472,8 @@ function mix$1(sp) {
function vars$0(sp) {
sp = sp | 0;
var x = 0, y = +0;
- y = +HEAPF32[sp + 16 >> 2];
x = HEAP32[sp + 8 >> 2] | 0;
+ y = +HEAPF32[sp + 16 >> 2];
c(5 + (x + y));
c(6 + y * x);
c(7 + (x + y));
@@ -482,8 +482,8 @@ function vars$0(sp) {
function vars$1(sp) {
sp = sp | 0;
var x = 0, y = +0;
- y = +HEAPF32[sp + 16 >> 2];
x = HEAP32[sp + 8 >> 2] | 0;
+ y = +HEAPF32[sp + 16 >> 2];
c(1 + (x + y));
c(2 + y * x);
c(3 + (x + y));
@@ -492,8 +492,8 @@ function vars$1(sp) {
function vars2$0(sp) {
sp = sp | 0;
var a = 0, b = +0;
- b = +HEAPF32[sp + 32 >> 2];
a = HEAP32[sp + 24 >> 2] | 0;
+ b = +HEAPF32[sp + 32 >> 2];
a = c(3 + a);
b = c(4 + b);
a = c(5 + a);
@@ -516,8 +516,8 @@ function vars3$0(sp) {
function vars3$1(sp) {
sp = sp | 0;
var a = 0, x = 0, y = +0;
- y = +HEAPF32[sp + 16 >> 2];
x = HEAP32[sp + 8 >> 2] | 0;
+ y = +HEAPF32[sp + 16 >> 2];
a = HEAP32[sp + 24 >> 2] | 0;
a = x + y;
a = c(1 + a);
@@ -528,9 +528,9 @@ function vars3$1(sp) {
function vars4$0(sp) {
sp = sp | 0;
var a = 0, x = 0, b = +0;
- b = +HEAPF32[sp + 32 >> 2];
x = HEAP32[sp + 8 >> 2] | 0;
a = HEAP32[sp + 24 >> 2] | 0;
+ b = +HEAPF32[sp + 32 >> 2];
a = c(4 + a);
a = c(5 + a);
a = c(6 + a);
@@ -541,22 +541,22 @@ function vars4$0(sp) {
function vars4$1(sp) {
sp = sp | 0;
var y = +0, x = 0, a = 0, b = +0;
- b = +HEAPF32[sp + 32 >> 2];
- a = HEAP32[sp + 24 >> 2] | 0;
x = HEAP32[sp + 8 >> 2] | 0;
y = +HEAPF32[sp + 16 >> 2];
+ a = HEAP32[sp + 24 >> 2] | 0;
+ b = +HEAPF32[sp + 32 >> 2];
b = y * x;
a = c(1 + a);
a = c(2 + a);
a = c(3 + a);
- HEAPF32[sp + 32 >> 2] = b;
HEAP32[sp + 24 >> 2] = a;
+ HEAPF32[sp + 32 >> 2] = b;
}
function vars_w_stack$0(sp) {
sp = sp | 0;
var a = 0, b = +0;
- b = +HEAPF32[sp + 48 >> 2];
a = HEAP32[sp + 40 >> 2] | 0;
+ b = +HEAPF32[sp + 48 >> 2];
a = c(4 + a);
a = c(5 + a);
a = c(6 + a);
@@ -568,16 +568,16 @@ function vars_w_stack$0(sp) {
function vars_w_stack$1(sp) {
sp = sp | 0;
var y = +0, x = 0, a = 0, b = +0;
- b = +HEAPF32[sp + 48 >> 2];
- a = HEAP32[sp + 40 >> 2] | 0;
x = HEAP32[sp + 24 >> 2] | 0;
y = +HEAPF32[sp + 32 >> 2];
+ a = HEAP32[sp + 40 >> 2] | 0;
+ b = +HEAPF32[sp + 48 >> 2];
b = y * x;
a = c(1 + a);
a = c(2 + a);
a = c(3 + a);
- HEAPF32[sp + 48 >> 2] = b;
HEAP32[sp + 40 >> 2] = a;
+ HEAPF32[sp + 48 >> 2] = b;
}
function chain$0(sp) {
sp = sp | 0;
diff --git a/tools/test-js-optimizer-asm-outline2-output.js b/tools/test-js-optimizer-asm-outline2-output.js
index 9f0be278..5acac673 100644
--- a/tools/test-js-optimizer-asm-outline2-output.js
+++ b/tools/test-js-optimizer-asm-outline2-output.js
@@ -50,19 +50,19 @@ function _free($mem) {
if (($mem + (-8 - $21 | 0) | 0) >>> 0 < $5 >>> 0) {
_abort();
}
- HEAP32[sp + 664 >> 2] = 0;
- HEAP32[sp + 668 >> 2] = 0;
- HEAP32[sp + 48 >> 2] = $25;
HEAP32[sp + 8 >> 2] = $mem;
+ HEAP32[sp + 16 >> 2] = $5;
HEAP32[sp + 24 >> 2] = $10;
- HEAP32[sp + 56 >> 2] = $26;
HEAP32[sp + 40 >> 2] = $21;
- HEAP32[sp + 16 >> 2] = $5;
- HEAP32[sp + 224 >> 2] = $p_0;
+ HEAP32[sp + 48 >> 2] = $25;
+ HEAP32[sp + 56 >> 2] = $26;
HEAP32[sp + 216 >> 2] = $psize_0;
+ HEAP32[sp + 224 >> 2] = $p_0;
+ HEAP32[sp + 664 >> 2] = 0;
+ HEAP32[sp + 668 >> 2] = 0;
_free$1(sp);
- $p_0 = HEAP32[sp + 224 >> 2] | 0;
$psize_0 = HEAP32[sp + 216 >> 2] | 0;
+ $p_0 = HEAP32[sp + 224 >> 2] | 0;
tempValue = HEAP32[sp + 664 >> 2] | 0;
tempInt = HEAP32[sp + 668 >> 2] | 0;
tempDouble = +HEAPF32[sp + 668 >> 2];
@@ -104,15 +104,15 @@ function _free($mem) {
if (($194 & 1 | 0) == 0) {
_abort();
}
- HEAP32[sp + 672 >> 2] = 0;
- HEAP32[sp + 676 >> 2] = 0;
- HEAP32[sp + 240 >> 2] = $194;
+ HEAP32[sp + 8 >> 2] = $mem;
+ HEAP32[sp + 24 >> 2] = $10;
HEAP32[sp + 32 >> 2] = $16;
HEAP32[sp + 216 >> 2] = $psize_0;
HEAP32[sp + 224 >> 2] = $p_0;
HEAP32[sp + 232 >> 2] = $189;
- HEAP32[sp + 8 >> 2] = $mem;
- HEAP32[sp + 24 >> 2] = $10;
+ HEAP32[sp + 240 >> 2] = $194;
+ HEAP32[sp + 672 >> 2] = 0;
+ HEAP32[sp + 676 >> 2] = 0;
_free$2(sp);
tempValue = HEAP32[sp + 672 >> 2] | 0;
tempInt = HEAP32[sp + 676 >> 2] | 0;
@@ -158,14 +158,14 @@ function linear$1(sp) {
function _free$0(sp) {
sp = sp | 0;
var $16 = 0, $220 = 0, $psize_0 = 0, $p_0 = 0, $189 = 0, $227 = 0, $194 = 0, $233 = 0, $mem = 0, $10 = 0, $236 = 0, $_pre_phi305 = 0, $267 = 0, $270 = 0, $273 = 0, $294 = 0, $299 = 0, $R7_1 = 0, $R7_0 = 0, $RP9_0 = 0, $301 = 0, $302 = 0, $305 = 0, $306 = 0, $278 = 0, $320 = 0, $351 = 0, $364 = 0, $psize_1 = 0;
- $psize_1 = HEAP32[sp + 424 >> 2] | 0;
- $10 = HEAP32[sp + 24 >> 2] | 0;
$mem = HEAP32[sp + 8 >> 2] | 0;
- $194 = HEAP32[sp + 240 >> 2] | 0;
- $189 = HEAP32[sp + 232 >> 2] | 0;
- $p_0 = HEAP32[sp + 224 >> 2] | 0;
- $psize_0 = HEAP32[sp + 216 >> 2] | 0;
+ $10 = HEAP32[sp + 24 >> 2] | 0;
$16 = HEAP32[sp + 32 >> 2] | 0;
+ $psize_0 = HEAP32[sp + 216 >> 2] | 0;
+ $p_0 = HEAP32[sp + 224 >> 2] | 0;
+ $189 = HEAP32[sp + 232 >> 2] | 0;
+ $194 = HEAP32[sp + 240 >> 2] | 0;
+ $psize_1 = HEAP32[sp + 424 >> 2] | 0;
OL : do {
if (($16 | 0) == (HEAP32[25] | 0)) {
$220 = (HEAP32[22] | 0) + $psize_0 | 0;
@@ -345,14 +345,14 @@ function _free$0(sp) {
function _free$1(sp) {
sp = sp | 0;
var $25 = 0, $mem = 0, $10 = 0, $26 = 0, $21 = 0, $37 = 0, $40 = 0, $5 = 0, $_pre_phi307 = 0, $69 = 0, $72 = 0, $75 = 0, $95 = 0, $100 = 0, $R_1 = 0, $R_0 = 0, $RP_0 = 0, $102 = 0, $103 = 0, $106 = 0, $107 = 0, $80 = 0, $120 = 0, $151 = 0, $164 = 0, $p_0 = 0, $psize_0 = 0;
- $psize_0 = HEAP32[sp + 216 >> 2] | 0;
- $p_0 = HEAP32[sp + 224 >> 2] | 0;
+ $mem = HEAP32[sp + 8 >> 2] | 0;
$5 = HEAP32[sp + 16 >> 2] | 0;
- $21 = HEAP32[sp + 40 >> 2] | 0;
- $26 = HEAP32[sp + 56 >> 2] | 0;
$10 = HEAP32[sp + 24 >> 2] | 0;
- $mem = HEAP32[sp + 8 >> 2] | 0;
+ $21 = HEAP32[sp + 40 >> 2] | 0;
$25 = HEAP32[sp + 48 >> 2] | 0;
+ $26 = HEAP32[sp + 56 >> 2] | 0;
+ $psize_0 = HEAP32[sp + 216 >> 2] | 0;
+ $p_0 = HEAP32[sp + 224 >> 2] | 0;
OL : do {
if (($25 | 0) == (HEAP32[25] | 0)) {
if ((HEAP32[($mem + (($10 & -8) - 4) | 0) >> 2] & 3 | 0) != 3) {
@@ -542,18 +542,18 @@ function _free$1(sp) {
break OL;
}
} while (0);
- HEAP32[sp + 224 >> 2] = $p_0;
HEAP32[sp + 216 >> 2] = $psize_0;
+ HEAP32[sp + 224 >> 2] = $p_0;
}
function _free$2(sp) {
sp = sp | 0;
- var helper$1 = 0, $194 = 0, $16 = 0, $204 = 0, $psize_0 = 0, $p_0 = 0, $189 = 0, $mem = 0, $10 = 0, $psize_1 = 0, $390 = 0, $396 = 0, $F16_0 = 0, $_pre_phi = 0, $404 = 0, $414 = 0, $415 = 0, $I18_0 = 0, $428 = 0, $436 = 0, $443 = 0, $447 = 0, $448 = 0, $463 = 0, $K19_0 = 0, $T_0 = 0, $472 = 0, $473 = 0, label = 0, $486 = 0, $487 = 0, $489 = 0, $501 = 0, $sp_0_in_i = 0, $sp_0_i = 0;
- $10 = HEAP32[sp + 24 >> 2] | 0;
+ var helper$1 = 0, $194 = 0, $16 = 0, $204 = 0, $psize_0 = 0, $p_0 = 0, $mem = 0, $10 = 0, $189 = 0, $psize_1 = 0, $390 = 0, $396 = 0, $F16_0 = 0, $_pre_phi = 0, $404 = 0, $414 = 0, $415 = 0, $I18_0 = 0, $428 = 0, $436 = 0, $443 = 0, $447 = 0, $448 = 0, $463 = 0, $K19_0 = 0, $T_0 = 0, $472 = 0, $473 = 0, label = 0, $486 = 0, $487 = 0, $489 = 0, $501 = 0, $sp_0_in_i = 0, $sp_0_i = 0;
$mem = HEAP32[sp + 8 >> 2] | 0;
- $189 = HEAP32[sp + 232 >> 2] | 0;
- $p_0 = HEAP32[sp + 224 >> 2] | 0;
- $psize_0 = HEAP32[sp + 216 >> 2] | 0;
+ $10 = HEAP32[sp + 24 >> 2] | 0;
$16 = HEAP32[sp + 32 >> 2] | 0;
+ $psize_0 = HEAP32[sp + 216 >> 2] | 0;
+ $p_0 = HEAP32[sp + 224 >> 2] | 0;
+ $189 = HEAP32[sp + 232 >> 2] | 0;
$194 = HEAP32[sp + 240 >> 2] | 0;
OL : do {
do {
@@ -578,16 +578,16 @@ function _free$2(sp) {
HEAP32[sp + 672 >> 2] = 5;
break OL;
}
- HEAP32[sp + 656 >> 2] = 0;
- HEAP32[sp + 660 >> 2] = 0;
+ HEAP32[sp + 8 >> 2] = $mem;
+ HEAP32[sp + 24 >> 2] = $10;
HEAP32[sp + 32 >> 2] = $16;
HEAP32[sp + 216 >> 2] = $psize_0;
HEAP32[sp + 224 >> 2] = $p_0;
HEAP32[sp + 232 >> 2] = $189;
HEAP32[sp + 240 >> 2] = $194;
- HEAP32[sp + 8 >> 2] = $mem;
- HEAP32[sp + 24 >> 2] = $10;
HEAP32[sp + 424 >> 2] = $psize_1;
+ HEAP32[sp + 656 >> 2] = 0;
+ HEAP32[sp + 660 >> 2] = 0;
_free$0(sp);
$psize_1 = HEAP32[sp + 424 >> 2] | 0;
tempValue = HEAP32[sp + 656 >> 2] | 0;