aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--tools/js-optimizer.js49
-rw-r--r--tools/test-js-optimizer-asm-outline1-output.js282
-rw-r--r--tools/test-js-optimizer-asm-outline2-output.js190
3 files changed, 261 insertions, 260 deletions
diff --git a/tools/js-optimizer.js b/tools/js-optimizer.js
index 04352838..51e38817 100644
--- a/tools/js-optimizer.js
+++ b/tools/js-optimizer.js
@@ -3008,17 +3008,18 @@ function outline(ast) {
}
asmData.stackPos = {};
var stackSize = getStackBumpSize(func);
+ if (stackSize % 8 === 0) stackSize += 8 - (stackSize % 8);
for (var i = 0; i < stack.length; i++) {
asmData.stackPos[stack[i]] = stackSize + i*8;
}
- // Reserve an extra two spots: one for control flow var, the other for control flow data
+ // Reserve an extra two spots per possible outlining: one for control flow var, the other for control flow data
// The control variables are zeroed out when calling an outlined function, and after using
// the value after they return.
- asmData.extraStackSize = (stack.length + 2)*8;
- asmData.controlStackPos = stackSize + asmData.extraStackSize - 16;
- asmData.controlDataStackPos = stackSize + asmData.extraStackSize - 8;
- asmData.splitCounter = 0;
asmData.maxOutlinings = Math.round(1.5*measureSize(func)/sizeToOutline);
+ asmData.totalStackSize = stackSize + (stack.length + 2*asmData.maxOutlinings)*8;
+ asmData.controlStackPos = function(i) { return stackSize + (stack.length + i)*8 };
+ asmData.controlDataStackPos = function(i) { return stackSize + (stack.length + i)*8 + 4 };
+ asmData.splitCounter = 0;
}
// Analyze uses - reads and writes - of variables in part of the AST of a function
@@ -3124,11 +3125,12 @@ function outline(ast) {
var outliningParents = {}; // function name => parent it was outlined from
function doOutline(func, asmData, stats, start, end) {
+ if (asmData.splitCounter === asmData.maxOutlinings) return [];
if (!extraInfo.allowCostlyOutlines) var originalStats = copy(stats);
var code = stats.slice(start, end+1);
var funcSize = measureSize(func);
- var newIdent = func[1] + '$' + (asmData.splitCounter++);
- if (asmData.splitCounter === asmData.maxOutlinings) return [];
+ var outlineIndex = asmData.splitCounter++;
+ var newIdent = func[1] + '$' + outlineIndex;
// analyze variables, and find 'owned' variables - that only appear in the outlined code, and do not need any spill support
var codeInfo = analyzeCode(func, asmData, code);
var allCodeInfo = analyzeCode(func, asmData, func);
@@ -3141,8 +3143,8 @@ function outline(ast) {
});
var reps = [];
// wipe out control variable
- reps.push(['stat', makeAssign(makeStackAccess(ASM_INT, asmData.controlStackPos), ['num', 0])]);
- reps.push(['stat', makeAssign(makeStackAccess(ASM_INT, asmData.controlDataStackPos), ['num', 0])]); // XXX not really needed
+ 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) {
if (!(v in owned)) {
@@ -3178,11 +3180,11 @@ function outline(ast) {
if (type == 'return') {
ret = [];
if (!node[1]) {
- ret.push(['stat', makeAssign(makeStackAccess(ASM_INT, asmData.controlStackPos), ['num', CONTROL_RETURN_VOID])]);
+ ret.push(['stat', makeAssign(makeStackAccess(ASM_INT, asmData.controlStackPos(outlineIndex)), ['num', CONTROL_RETURN_VOID])]);
} else {
var type = detectAsmCoercion(node[1], asmData);
- ret.push(['stat', makeAssign(makeStackAccess(ASM_INT, asmData.controlStackPos), ['num', type == ASM_INT ? CONTROL_RETURN_INT : CONTROL_RETURN_DOUBLE])]);
- ret.push(['stat', makeAssign(makeStackAccess(type, asmData.controlDataStackPos), node[1])]);
+ ret.push(['stat', makeAssign(makeStackAccess(ASM_INT, asmData.controlStackPos(outlineIndex)), ['num', type == ASM_INT ? CONTROL_RETURN_INT : CONTROL_RETURN_DOUBLE])]);
+ ret.push(['stat', makeAssign(makeStackAccess(type, asmData.controlDataStackPos(outlineIndex)), node[1])]);
}
ret.push(['stat', ['break', 'OL']]);
} else if (type == 'break') {
@@ -3190,20 +3192,20 @@ function outline(ast) {
if (label == 'OL') continue; // this was just added before us, it is new replacement code
if (!label && breakCapturers > 0) continue; // no label, and captured
if (label && (label in codeInfo.labels)) continue; // label, and defined in this code, so captured
- ret = [['stat', makeAssign(makeStackAccess(ASM_INT, asmData.controlStackPos), ['num', label ? CONTROL_BREAK_LABEL : CONTROL_BREAK])]];
+ ret = [['stat', makeAssign(makeStackAccess(ASM_INT, asmData.controlStackPos(outlineIndex)), ['num', label ? CONTROL_BREAK_LABEL : CONTROL_BREAK])]];
if (label) {
assert(label in codeInfo.breaks);
- ret.push(['stat', makeAssign(makeStackAccess(ASM_INT, asmData.controlDataStackPos), ['num', codeInfo.breaks[label]])]);
+ ret.push(['stat', makeAssign(makeStackAccess(ASM_INT, asmData.controlDataStackPos(outlineIndex)), ['num', codeInfo.breaks[label]])]);
}
ret.push(['stat', ['break', 'OL']]);
} else if (type == 'continue') {
var label = node[1] || 0;
if (!label && continueCapturers > 0) continue; // no label, and captured
if (label && (label in codeInfo.labels)) continue; // label, and defined in this code, so captured
- ret = [['stat', makeAssign(makeStackAccess(ASM_INT, asmData.controlStackPos), ['num', label ? CONTROL_CONTINUE_LABEL : CONTROL_CONTINUE])]];
+ ret = [['stat', makeAssign(makeStackAccess(ASM_INT, asmData.controlStackPos(outlineIndex)), ['num', label ? CONTROL_CONTINUE_LABEL : CONTROL_CONTINUE])]];
if (label) {
assert(label in codeInfo.continues);
- ret.push(['stat', makeAssign(makeStackAccess(ASM_INT, asmData.controlDataStackPos), ['num', codeInfo.continues[label]])]);
+ ret.push(['stat', makeAssign(makeStackAccess(ASM_INT, asmData.controlDataStackPos(outlineIndex)), ['num', codeInfo.continues[label]])]);
}
ret.push(['stat', ['break', 'OL']]);
}
@@ -3225,18 +3227,18 @@ function outline(ast) {
// read the control data at the callsite to the outlined function, and clear the control values
reps.push(['stat', makeAssign(
['name', 'tempValue'],
- makeAsmCoercion(makeStackAccess(ASM_INT, asmData.controlStackPos), ASM_INT)
+ makeAsmCoercion(makeStackAccess(ASM_INT, asmData.controlStackPos(outlineIndex)), ASM_INT)
)]);
reps.push(['stat', makeAssign(
['name', 'tempInt'],
- makeAsmCoercion(makeStackAccess(ASM_INT, asmData.controlDataStackPos), ASM_INT)
+ makeAsmCoercion(makeStackAccess(ASM_INT, asmData.controlDataStackPos(outlineIndex)), ASM_INT)
)]);
reps.push(['stat', makeAssign(
['name', 'tempDouble'],
- makeAsmCoercion(makeStackAccess(ASM_DOUBLE, asmData.controlDataStackPos), ASM_DOUBLE)
+ makeAsmCoercion(makeStackAccess(ASM_DOUBLE, asmData.controlDataStackPos(outlineIndex)), ASM_DOUBLE)
)]);
- reps.push(['stat', makeAssign(makeStackAccess(ASM_INT, asmData.controlStackPos), ['num', 0])]);
- reps.push(['stat', makeAssign(makeStackAccess(ASM_INT, asmData.controlDataStackPos), ['num', 0])]); // XXX not really needed
+ 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
// use the control data information
if (codeInfo.hasReturn) {
reps.push(makeIf(
@@ -3442,17 +3444,16 @@ function outline(ast) {
if (ret && ret.length > 0) {
newFuncs.push.apply(newFuncs, ret);
// We have outlined. Add stack support
- var extraSpace = asmData.extraStackSize;
if ('sp' in asmData.vars) {
// find stack bump (STACKTOP = STACKTOP + X | 0) and add the extra space
var stackBumpNode = getStackBumpNode(stats);
- if (stackBumpNode) stackBumpNode[3][2][3][1] += extraSpace;
+ if (stackBumpNode) stackBumpNode[3][2][3][1] = asmData.totalStackSize;
} else if (!('sp' in asmData.params)) { // if sp is a param, then we are an outlined function, no need to add stack support for us
// add sp variable and stack bump
var index = getFirstIndexInNormalized(func, asmData);
stats.splice(index, 0,
['stat', makeAssign(['name', 'sp'], ['name', 'STACKTOP'])],
- ['stat', makeAssign(['name', 'STACKTOP'], ['binary', '|', ['binary', '+', ['name', 'STACKTOP'], ['num', extraSpace]], ['num', 0]])]
+ ['stat', makeAssign(['name', 'STACKTOP'], ['binary', '|', ['binary', '+', ['name', 'STACKTOP'], ['num', asmData.totalStackSize]], ['num', 0]])]
);
asmData.vars.sp = ASM_INT; // no need to add to vars, we are about to denormalize anyhow
// we added sp, so we must add stack popping
diff --git a/tools/test-js-optimizer-asm-outline1-output.js b/tools/test-js-optimizer-asm-outline1-output.js
index 6ef32f54..8d1071a9 100644
--- a/tools/test-js-optimizer-asm-outline1-output.js
+++ b/tools/test-js-optimizer-asm-outline1-output.js
@@ -1,33 +1,33 @@
function lin() {
var sp = 0;
sp = STACKTOP;
- STACKTOP = STACKTOP + 16 | 0;
+ STACKTOP = STACKTOP + 72 | 0;
c(1);
c(2);
c(3);
c(4);
- HEAP32[sp + 0 >> 2] = 0;
- HEAP32[sp + 8 >> 2] = 0;
+ HEAP32[sp + 16 >> 2] = 0;
+ HEAP32[sp + 20 >> 2] = 0;
sp = lin$1(sp) | 0;
- HEAP32[sp + 0 >> 2] = 0;
HEAP32[sp + 8 >> 2] = 0;
+ HEAP32[sp + 12 >> 2] = 0;
sp = lin$0(sp) | 0;
STACKTOP = sp;
}
function lin2() {
var sp = 0;
sp = STACKTOP;
- STACKTOP = STACKTOP + 16 | 0;
+ STACKTOP = STACKTOP + 72 | 0;
while (1) {
c(1);
c(2);
c(3);
c(4);
- HEAP32[sp + 0 >> 2] = 0;
- HEAP32[sp + 8 >> 2] = 0;
+ HEAP32[sp + 16 >> 2] = 0;
+ HEAP32[sp + 20 >> 2] = 0;
sp = lin2$1(sp) | 0;
- HEAP32[sp + 0 >> 2] = 0;
HEAP32[sp + 8 >> 2] = 0;
+ HEAP32[sp + 12 >> 2] = 0;
sp = lin2$0(sp) | 0;
}
STACKTOP = sp;
@@ -35,24 +35,24 @@ function lin2() {
function lin3() {
var sp = 0;
sp = STACKTOP;
- STACKTOP = STACKTOP + 16 | 0;
+ STACKTOP = STACKTOP + 72 | 0;
while (1) {
c(1);
c(2);
c(3);
c(4);
c(5);
- HEAP32[sp + 0 >> 2] = 0;
- HEAP32[sp + 8 >> 2] = 0;
+ HEAP32[sp + 16 >> 2] = 0;
+ HEAP32[sp + 20 >> 2] = 0;
sp = lin3$1(sp) | 0;
- HEAP32[sp + 0 >> 2] = 0;
HEAP32[sp + 8 >> 2] = 0;
+ HEAP32[sp + 12 >> 2] = 0;
sp = lin3$0(sp) | 0;
- tempValue = HEAP32[sp + 0 >> 2] | 0;
- tempInt = HEAP32[sp + 8 >> 2] | 0;
- tempDouble = +HEAPF32[sp + 8 >> 2];
- HEAP32[sp + 0 >> 2] = 0;
+ tempValue = HEAP32[sp + 8 >> 2] | 0;
+ tempInt = HEAP32[sp + 12 >> 2] | 0;
+ tempDouble = +HEAPF32[sp + 12 >> 2];
HEAP32[sp + 8 >> 2] = 0;
+ HEAP32[sp + 12 >> 2] = 0;
if ((tempValue | 0) == 6) {
STACKTOP = sp;
return tempInt | 0;
@@ -64,23 +64,23 @@ function lin3() {
function lin4() {
var sp = 0;
sp = STACKTOP;
- STACKTOP = STACKTOP + 16 | 0;
+ STACKTOP = STACKTOP + 72 | 0;
while (1) {
c(1);
c(2);
c(3);
c(4);
- HEAP32[sp + 0 >> 2] = 0;
- HEAP32[sp + 8 >> 2] = 0;
+ HEAP32[sp + 16 >> 2] = 0;
+ HEAP32[sp + 20 >> 2] = 0;
sp = lin4$1(sp) | 0;
- HEAP32[sp + 0 >> 2] = 0;
HEAP32[sp + 8 >> 2] = 0;
+ HEAP32[sp + 12 >> 2] = 0;
sp = lin4$0(sp) | 0;
- tempValue = HEAP32[sp + 0 >> 2] | 0;
- tempInt = HEAP32[sp + 8 >> 2] | 0;
- tempDouble = +HEAPF32[sp + 8 >> 2];
- HEAP32[sp + 0 >> 2] = 0;
+ tempValue = HEAP32[sp + 8 >> 2] | 0;
+ tempInt = HEAP32[sp + 12 >> 2] | 0;
+ tempDouble = +HEAPF32[sp + 12 >> 2];
HEAP32[sp + 8 >> 2] = 0;
+ HEAP32[sp + 12 >> 2] = 0;
if ((tempValue | 0) == 1) {
break;
}
@@ -91,23 +91,23 @@ function lin4() {
function lin5() {
var sp = 0;
sp = STACKTOP;
- STACKTOP = STACKTOP + 16 | 0;
+ STACKTOP = STACKTOP + 72 | 0;
while (1) {
c(1);
c(2);
c(3);
c(4);
- HEAP32[sp + 0 >> 2] = 0;
- HEAP32[sp + 8 >> 2] = 0;
+ HEAP32[sp + 16 >> 2] = 0;
+ HEAP32[sp + 20 >> 2] = 0;
sp = lin5$1(sp) | 0;
- HEAP32[sp + 0 >> 2] = 0;
HEAP32[sp + 8 >> 2] = 0;
+ HEAP32[sp + 12 >> 2] = 0;
sp = lin5$0(sp) | 0;
- tempValue = HEAP32[sp + 0 >> 2] | 0;
- tempInt = HEAP32[sp + 8 >> 2] | 0;
- tempDouble = +HEAPF32[sp + 8 >> 2];
- HEAP32[sp + 0 >> 2] = 0;
+ tempValue = HEAP32[sp + 8 >> 2] | 0;
+ tempInt = HEAP32[sp + 12 >> 2] | 0;
+ tempDouble = +HEAPF32[sp + 12 >> 2];
HEAP32[sp + 8 >> 2] = 0;
+ HEAP32[sp + 12 >> 2] = 0;
if ((tempValue | 0) == 3) {
continue;
}
@@ -118,7 +118,7 @@ function lin5() {
function mix() {
var sp = 0;
sp = STACKTOP;
- STACKTOP = STACKTOP + 16 | 0;
+ STACKTOP = STACKTOP + 88 | 0;
main : while (1) {
c(1);
c(2);
@@ -127,17 +127,17 @@ function mix() {
c(5);
c(6);
c(7);
- HEAP32[sp + 0 >> 2] = 0;
- HEAP32[sp + 8 >> 2] = 0;
+ HEAP32[sp + 16 >> 2] = 0;
+ HEAP32[sp + 20 >> 2] = 0;
sp = mix$1(sp) | 0;
- HEAP32[sp + 0 >> 2] = 0;
HEAP32[sp + 8 >> 2] = 0;
+ HEAP32[sp + 12 >> 2] = 0;
sp = mix$0(sp) | 0;
- tempValue = HEAP32[sp + 0 >> 2] | 0;
- tempInt = HEAP32[sp + 8 >> 2] | 0;
- tempDouble = +HEAPF32[sp + 8 >> 2];
- HEAP32[sp + 0 >> 2] = 0;
+ tempValue = HEAP32[sp + 8 >> 2] | 0;
+ tempInt = HEAP32[sp + 12 >> 2] | 0;
+ tempDouble = +HEAPF32[sp + 12 >> 2];
HEAP32[sp + 8 >> 2] = 0;
+ HEAP32[sp + 12 >> 2] = 0;
if ((tempValue | 0) == 1) {
break;
}
@@ -169,16 +169,16 @@ function vars(x, y) {
y = +y;
var sp = 0;
sp = STACKTOP;
- STACKTOP = STACKTOP + 32 | 0;
- HEAP32[sp + 16 >> 2] = 0;
- HEAP32[sp + 24 >> 2] = 0;
- HEAP32[sp + 0 >> 2] = x;
- HEAPF32[sp + 8 >> 2] = y;
+ STACKTOP = STACKTOP + 88 | 0;
+ HEAP32[sp + 32 >> 2] = 0;
+ HEAP32[sp + 36 >> 2] = 0;
+ HEAP32[sp + 8 >> 2] = x;
+ HEAPF32[sp + 16 >> 2] = y;
sp = vars$1(sp) | 0;
- HEAP32[sp + 16 >> 2] = 0;
HEAP32[sp + 24 >> 2] = 0;
- HEAP32[sp + 0 >> 2] = x;
- HEAPF32[sp + 8 >> 2] = y;
+ HEAP32[sp + 28 >> 2] = 0;
+ HEAP32[sp + 8 >> 2] = x;
+ HEAPF32[sp + 16 >> 2] = y;
sp = vars$0(sp) | 0;
STACKTOP = sp;
}
@@ -187,18 +187,18 @@ function vars2(x, y) {
y = +y;
var a = 0, b = +0, sp = 0;
sp = STACKTOP;
- STACKTOP = STACKTOP + 48 | 0;
+ STACKTOP = STACKTOP + 88 | 0;
a = x + y;
b = y * x;
a = c(1 + a);
b = c(2 + b);
- HEAP32[sp + 32 >> 2] = 0;
HEAP32[sp + 40 >> 2] = 0;
- HEAP32[sp + 16 >> 2] = a;
- HEAPF32[sp + 24 >> 2] = b;
+ HEAP32[sp + 44 >> 2] = 0;
+ HEAP32[sp + 24 >> 2] = a;
+ HEAPF32[sp + 32 >> 2] = b;
sp = vars2$0(sp) | 0;
- a = HEAP32[sp + 16 >> 2] | 0;
- b = +HEAPF32[sp + 24 >> 2];
+ a = HEAP32[sp + 24 >> 2] | 0;
+ b = +HEAPF32[sp + 32 >> 2];
STACKTOP = sp;
}
function vars3(x, y) {
@@ -206,21 +206,21 @@ function vars3(x, y) {
y = +y;
var a = 0, sp = 0;
sp = STACKTOP;
- STACKTOP = STACKTOP + 40 | 0;
- HEAP32[sp + 24 >> 2] = 0;
- HEAP32[sp + 32 >> 2] = 0;
- HEAP32[sp + 16 >> 2] = a;
- HEAP32[sp + 0 >> 2] = x;
- HEAPF32[sp + 8 >> 2] = y;
+ STACKTOP = STACKTOP + 96 | 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;
sp = vars3$1(sp) | 0;
- a = HEAP32[sp + 16 >> 2] | 0;
- HEAP32[sp + 24 >> 2] = 0;
+ a = HEAP32[sp + 24 >> 2] | 0;
HEAP32[sp + 32 >> 2] = 0;
- HEAP32[sp + 16 >> 2] = a;
- HEAPF32[sp + 8 >> 2] = y;
- HEAP32[sp + 0 >> 2] = x;
+ HEAP32[sp + 36 >> 2] = 0;
+ HEAP32[sp + 24 >> 2] = a;
+ HEAPF32[sp + 16 >> 2] = y;
+ HEAP32[sp + 8 >> 2] = x;
sp = vars3$0(sp) | 0;
- a = HEAP32[sp + 16 >> 2] | 0;
+ a = HEAP32[sp + 24 >> 2] | 0;
STACKTOP = sp;
}
function vars4(x, y) {
@@ -228,25 +228,25 @@ function vars4(x, y) {
y = +y;
var a = 0, b = +0, sp = 0;
sp = STACKTOP;
- STACKTOP = STACKTOP + 48 | 0;
+ STACKTOP = STACKTOP + 104 | 0;
a = x + y;
- HEAP32[sp + 32 >> 2] = 0;
- HEAP32[sp + 40 >> 2] = 0;
- HEAPF32[sp + 8 >> 2] = y;
- HEAP32[sp + 0 >> 2] = x;
- HEAP32[sp + 16 >> 2] = a;
- HEAPF32[sp + 24 >> 2] = b;
+ HEAP32[sp + 48 >> 2] = 0;
+ HEAP32[sp + 52 >> 2] = 0;
+ HEAPF32[sp + 16 >> 2] = y;
+ HEAP32[sp + 8 >> 2] = x;
+ HEAP32[sp + 24 >> 2] = a;
+ HEAPF32[sp + 32 >> 2] = b;
sp = vars4$1(sp) | 0;
- b = +HEAPF32[sp + 24 >> 2];
- a = HEAP32[sp + 16 >> 2] | 0;
- HEAP32[sp + 32 >> 2] = 0;
+ b = +HEAPF32[sp + 32 >> 2];
+ a = HEAP32[sp + 24 >> 2] | 0;
HEAP32[sp + 40 >> 2] = 0;
- HEAP32[sp + 16 >> 2] = a;
- HEAP32[sp + 0 >> 2] = x;
- HEAPF32[sp + 24 >> 2] = b;
+ HEAP32[sp + 44 >> 2] = 0;
+ HEAP32[sp + 24 >> 2] = a;
+ HEAP32[sp + 8 >> 2] = x;
+ HEAPF32[sp + 32 >> 2] = b;
sp = vars4$0(sp) | 0;
- a = HEAP32[sp + 16 >> 2] | 0;
- b = +HEAPF32[sp + 24 >> 2];
+ a = HEAP32[sp + 24 >> 2] | 0;
+ b = +HEAPF32[sp + 32 >> 2];
STACKTOP = sp;
}
function vars_w_stack(x, y) {
@@ -254,24 +254,24 @@ function vars_w_stack(x, y) {
y = +y;
var a = 0, b = +0, sp = 0;
sp = STACKTOP;
- STACKTOP = STACKTOP + 72 | 0;
+ STACKTOP = STACKTOP + 144 | 0;
a = x + y;
- HEAP32[sp + 56 >> 2] = 0;
- HEAP32[sp + 64 >> 2] = 0;
- HEAPF32[sp + 24 >> 2] = y;
- HEAP32[sp + 16 >> 2] = x;
- HEAP32[sp + 32 >> 2] = a;
- HEAPF32[sp + 40 >> 2] = b;
+ HEAP32[sp + 72 >> 2] = 0;
+ HEAP32[sp + 76 >> 2] = 0;
+ HEAPF32[sp + 32 >> 2] = y;
+ HEAP32[sp + 24 >> 2] = x;
+ HEAP32[sp + 40 >> 2] = a;
+ HEAPF32[sp + 48 >> 2] = b;
sp = vars_w_stack$1(sp) | 0;
- b = +HEAPF32[sp + 40 >> 2];
- a = HEAP32[sp + 32 >> 2] | 0;
- HEAP32[sp + 56 >> 2] = 0;
+ b = +HEAPF32[sp + 48 >> 2];
+ a = HEAP32[sp + 40 >> 2] | 0;
HEAP32[sp + 64 >> 2] = 0;
- HEAP32[sp + 32 >> 2] = a;
- HEAPF32[sp + 40 >> 2] = b;
+ HEAP32[sp + 68 >> 2] = 0;
+ HEAP32[sp + 40 >> 2] = a;
+ HEAPF32[sp + 48 >> 2] = b;
sp = vars_w_stack$0(sp) | 0;
- a = HEAP32[sp + 32 >> 2] | 0;
- b = +HEAPF32[sp + 40 >> 2];
+ a = HEAP32[sp + 40 >> 2] | 0;
+ b = +HEAPF32[sp + 48 >> 2];
}
function lin$0(sp) {
sp = sp | 0;
@@ -331,8 +331,8 @@ function lin3$0(sp) {
c(18);
c(19);
c(20);
- HEAP32[sp + 0 >> 2] = 6;
- HEAP32[sp + 8 >> 2] = 10;
+ HEAP32[sp + 8 >> 2] = 6;
+ HEAP32[sp + 12 >> 2] = 10;
break OL;
} while (0);
return sp | 0;
@@ -360,7 +360,7 @@ function lin4$0(sp) {
c(18);
c(19);
c(20);
- HEAP32[sp + 0 >> 2] = 1;
+ HEAP32[sp + 8 >> 2] = 1;
break OL;
} while (0);
return sp | 0;
@@ -388,7 +388,7 @@ function lin5$0(sp) {
c(18);
c(19);
c(20);
- HEAP32[sp + 0 >> 2] = 3;
+ HEAP32[sp + 8 >> 2] = 3;
break OL;
} while (0);
return sp | 0;
@@ -410,11 +410,11 @@ function mix$0(sp) {
OL : do {
c(16);
c(17);
- HEAP32[sp + 0 >> 2] = 2;
HEAP32[sp + 8 >> 2] = 2;
+ HEAP32[sp + 12 >> 2] = 2;
break OL;
c(18);
- HEAP32[sp + 0 >> 2] = 1;
+ HEAP32[sp + 8 >> 2] = 1;
break OL;
while (1) {
break;
@@ -423,11 +423,11 @@ function mix$0(sp) {
break inner;
}
c(19);
- HEAP32[sp + 0 >> 2] = 3;
+ HEAP32[sp + 8 >> 2] = 3;
break OL;
c(20);
- HEAP32[sp + 0 >> 2] = 4;
- HEAP32[sp + 8 >> 2] = 3;
+ HEAP32[sp + 8 >> 2] = 4;
+ HEAP32[sp + 12 >> 2] = 3;
break OL;
} while (0);
return sp | 0;
@@ -447,8 +447,8 @@ function mix$1(sp) {
function vars$0(sp) {
sp = sp | 0;
var x = 0, y = +0;
- y = +HEAPF32[sp + 8 >> 2];
- x = HEAP32[sp + 0 >> 2] | 0;
+ y = +HEAPF32[sp + 16 >> 2];
+ x = HEAP32[sp + 8 >> 2] | 0;
c(5 + (x + y));
c(6 + y * x);
c(7 + (x + y));
@@ -458,8 +458,8 @@ function vars$0(sp) {
function vars$1(sp) {
sp = sp | 0;
var x = 0, y = +0;
- y = +HEAPF32[sp + 8 >> 2];
- x = HEAP32[sp + 0 >> 2] | 0;
+ y = +HEAPF32[sp + 16 >> 2];
+ x = HEAP32[sp + 8 >> 2] | 0;
c(1 + (x + y));
c(2 + y * x);
c(3 + (x + y));
@@ -469,98 +469,98 @@ function vars$1(sp) {
function vars2$0(sp) {
sp = sp | 0;
var a = 0, b = +0;
- b = +HEAPF32[sp + 24 >> 2];
- a = HEAP32[sp + 16 >> 2] | 0;
+ b = +HEAPF32[sp + 32 >> 2];
+ a = HEAP32[sp + 24 >> 2] | 0;
a = c(3 + a);
b = c(4 + b);
a = c(5 + a);
b = c(6 + b);
- HEAP32[sp + 16 >> 2] = a;
- HEAPF32[sp + 24 >> 2] = b;
+ HEAP32[sp + 24 >> 2] = a;
+ HEAPF32[sp + 32 >> 2] = b;
return sp | 0;
}
function vars3$0(sp) {
sp = sp | 0;
var a = 0, y = +0, x = 0;
- x = HEAP32[sp + 0 >> 2] | 0;
- y = +HEAPF32[sp + 8 >> 2];
- a = HEAP32[sp + 16 >> 2] | 0;
+ x = HEAP32[sp + 8 >> 2] | 0;
+ y = +HEAPF32[sp + 16 >> 2];
+ a = HEAP32[sp + 24 >> 2] | 0;
a = c(4 + y * x);
a = c(5 + a);
a = c(6 + y * x);
a = c(7 + a);
- HEAP32[sp + 16 >> 2] = a;
+ HEAP32[sp + 24 >> 2] = a;
return sp | 0;
}
function vars3$1(sp) {
sp = sp | 0;
var a = 0, x = 0, y = +0;
- y = +HEAPF32[sp + 8 >> 2];
- x = HEAP32[sp + 0 >> 2] | 0;
- a = HEAP32[sp + 16 >> 2] | 0;
+ y = +HEAPF32[sp + 16 >> 2];
+ x = HEAP32[sp + 8 >> 2] | 0;
+ a = HEAP32[sp + 24 >> 2] | 0;
a = x + y;
a = c(1 + a);
a = c(2 + y * x);
a = c(3 + a);
- HEAP32[sp + 16 >> 2] = a;
+ HEAP32[sp + 24 >> 2] = a;
return sp | 0;
}
function vars4$0(sp) {
sp = sp | 0;
var a = 0, x = 0, b = +0;
- b = +HEAPF32[sp + 24 >> 2];
- x = HEAP32[sp + 0 >> 2] | 0;
- a = HEAP32[sp + 16 >> 2] | 0;
+ b = +HEAPF32[sp + 32 >> 2];
+ x = HEAP32[sp + 8 >> 2] | 0;
+ a = HEAP32[sp + 24 >> 2] | 0;
a = c(4 + a);
a = c(5 + a);
a = c(6 + a);
b = c(7 + a + x);
- HEAP32[sp + 16 >> 2] = a;
- HEAPF32[sp + 24 >> 2] = b;
+ HEAP32[sp + 24 >> 2] = a;
+ HEAPF32[sp + 32 >> 2] = b;
return sp | 0;
}
function vars4$1(sp) {
sp = sp | 0;
var y = +0, x = 0, a = 0, b = +0;
- b = +HEAPF32[sp + 24 >> 2];
- a = HEAP32[sp + 16 >> 2] | 0;
- x = HEAP32[sp + 0 >> 2] | 0;
- y = +HEAPF32[sp + 8 >> 2];
+ b = +HEAPF32[sp + 32 >> 2];
+ a = HEAP32[sp + 24 >> 2] | 0;
+ x = HEAP32[sp + 8 >> 2] | 0;
+ y = +HEAPF32[sp + 16 >> 2];
b = y * x;
a = c(1 + a);
a = c(2 + a);
a = c(3 + a);
- HEAPF32[sp + 24 >> 2] = b;
- HEAP32[sp + 16 >> 2] = a;
+ HEAPF32[sp + 32 >> 2] = b;
+ HEAP32[sp + 24 >> 2] = a;
return sp | 0;
}
function vars_w_stack$0(sp) {
sp = sp | 0;
var a = 0, b = +0;
- b = +HEAPF32[sp + 40 >> 2];
- a = HEAP32[sp + 32 >> 2] | 0;
+ b = +HEAPF32[sp + 48 >> 2];
+ a = HEAP32[sp + 40 >> 2] | 0;
a = c(4 + a);
a = c(5 + a);
a = c(6 + a);
b = c(7 + a);
STACKTOP = sp;
- HEAP32[sp + 32 >> 2] = a;
- HEAPF32[sp + 40 >> 2] = b;
+ HEAP32[sp + 40 >> 2] = a;
+ HEAPF32[sp + 48 >> 2] = b;
return sp | 0;
}
function vars_w_stack$1(sp) {
sp = sp | 0;
var y = +0, x = 0, a = 0, b = +0;
- b = +HEAPF32[sp + 40 >> 2];
- a = HEAP32[sp + 32 >> 2] | 0;
- x = HEAP32[sp + 16 >> 2] | 0;
- y = +HEAPF32[sp + 24 >> 2];
+ b = +HEAPF32[sp + 48 >> 2];
+ a = HEAP32[sp + 40 >> 2] | 0;
+ x = HEAP32[sp + 24 >> 2] | 0;
+ y = +HEAPF32[sp + 32 >> 2];
b = y * x;
a = c(1 + a);
a = c(2 + a);
a = c(3 + a);
- HEAPF32[sp + 40 >> 2] = b;
- HEAP32[sp + 32 >> 2] = a;
+ HEAPF32[sp + 48 >> 2] = b;
+ HEAP32[sp + 40 >> 2] = a;
return sp | 0;
}
diff --git a/tools/test-js-optimizer-asm-outline2-output.js b/tools/test-js-optimizer-asm-outline2-output.js
index 4b7bb6e2..31bb7bf9 100644
--- a/tools/test-js-optimizer-asm-outline2-output.js
+++ b/tools/test-js-optimizer-asm-outline2-output.js
@@ -1,7 +1,7 @@
function linear() {
var sp = 0;
sp = STACKTOP;
- STACKTOP = STACKTOP + 16 | 0;
+ STACKTOP = STACKTOP + 72 | 0;
cheez(1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0);
cheez(1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0);
cheez(1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0);
@@ -11,11 +11,11 @@ function linear() {
cheez(1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0);
cheez(1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0);
cheez(1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0);
- HEAP32[sp + 0 >> 2] = 0;
- HEAP32[sp + 8 >> 2] = 0;
+ HEAP32[sp + 16 >> 2] = 0;
+ HEAP32[sp + 20 >> 2] = 0;
sp = linear$1(sp) | 0;
- HEAP32[sp + 0 >> 2] = 0;
HEAP32[sp + 8 >> 2] = 0;
+ HEAP32[sp + 12 >> 2] = 0;
sp = linear$0(sp) | 0;
STACKTOP = sp;
}
@@ -47,24 +47,24 @@ function _free($mem) {
if (($mem + (-8 - $21 | 0) | 0) >>> 0 < $5 >>> 0) {
_abort();
}
- HEAP32[sp + 632 >> 2] = 0;
- HEAP32[sp + 640 >> 2] = 0;
- HEAP32[sp + 40 >> 2] = $25;
- HEAP32[sp + 0 >> 2] = $mem;
- HEAP32[sp + 16 >> 2] = $10;
- HEAP32[sp + 48 >> 2] = $26;
- HEAP32[sp + 32 >> 2] = $21;
- HEAP32[sp + 8 >> 2] = $5;
- HEAP32[sp + 216 >> 2] = $p_0;
- HEAP32[sp + 208 >> 2] = $psize_0;
+ HEAP32[sp + 648 >> 2] = 0;
+ HEAP32[sp + 652 >> 2] = 0;
+ HEAP32[sp + 48 >> 2] = $25;
+ HEAP32[sp + 8 >> 2] = $mem;
+ 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 + 216 >> 2] = $psize_0;
sp = _free$1(sp) | 0;
- $p_0 = HEAP32[sp + 216 >> 2] | 0;
- $psize_0 = HEAP32[sp + 208 >> 2] | 0;
- tempValue = HEAP32[sp + 632 >> 2] | 0;
- tempInt = HEAP32[sp + 640 >> 2] | 0;
- tempDouble = +HEAPF32[sp + 640 >> 2];
- HEAP32[sp + 632 >> 2] = 0;
- HEAP32[sp + 640 >> 2] = 0;
+ $p_0 = HEAP32[sp + 224 >> 2] | 0;
+ $psize_0 = HEAP32[sp + 216 >> 2] | 0;
+ tempValue = HEAP32[sp + 648 >> 2] | 0;
+ tempInt = HEAP32[sp + 652 >> 2] | 0;
+ tempDouble = +HEAPF32[sp + 652 >> 2];
+ HEAP32[sp + 648 >> 2] = 0;
+ HEAP32[sp + 652 >> 2] = 0;
if ((tempValue | 0) == 5) {
return;
}
@@ -92,21 +92,21 @@ function _free($mem) {
if (($194 & 1 | 0) == 0) {
_abort();
}
- HEAP32[sp + 632 >> 2] = 0;
- HEAP32[sp + 640 >> 2] = 0;
- HEAP32[sp + 232 >> 2] = $194;
- HEAP32[sp + 24 >> 2] = $16;
- HEAP32[sp + 208 >> 2] = $psize_0;
- HEAP32[sp + 216 >> 2] = $p_0;
- HEAP32[sp + 224 >> 2] = $189;
- HEAP32[sp + 0 >> 2] = $mem;
- HEAP32[sp + 16 >> 2] = $10;
+ HEAP32[sp + 656 >> 2] = 0;
+ HEAP32[sp + 660 >> 2] = 0;
+ HEAP32[sp + 240 >> 2] = $194;
+ 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;
sp = _free$2(sp) | 0;
- tempValue = HEAP32[sp + 632 >> 2] | 0;
- tempInt = HEAP32[sp + 640 >> 2] | 0;
- tempDouble = +HEAPF32[sp + 640 >> 2];
- HEAP32[sp + 632 >> 2] = 0;
- HEAP32[sp + 640 >> 2] = 0;
+ tempValue = HEAP32[sp + 656 >> 2] | 0;
+ tempInt = HEAP32[sp + 660 >> 2] | 0;
+ tempDouble = +HEAPF32[sp + 660 >> 2];
+ HEAP32[sp + 656 >> 2] = 0;
+ HEAP32[sp + 660 >> 2] = 0;
if ((tempValue | 0) == 5) {
return;
}
@@ -148,14 +148,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 + 416 >> 2] | 0;
- $10 = HEAP32[sp + 16 >> 2] | 0;
- $mem = HEAP32[sp + 0 >> 2] | 0;
- $194 = HEAP32[sp + 232 >> 2] | 0;
- $189 = HEAP32[sp + 224 >> 2] | 0;
- $p_0 = HEAP32[sp + 216 >> 2] | 0;
- $psize_0 = HEAP32[sp + 208 >> 2] | 0;
- $16 = HEAP32[sp + 24 >> 2] | 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;
+ $16 = HEAP32[sp + 32 >> 2] | 0;
OL : do {
if (($16 | 0) == (HEAP32[25] | 0)) {
$220 = (HEAP32[22] | 0) + $psize_0 | 0;
@@ -163,7 +163,7 @@ function _free$0(sp) {
HEAP32[25] = $p_0;
HEAP32[$p_0 + 4 >> 2] = $220 | 1;
HEAP32[$189 + $220 >> 2] = $220;
- HEAP32[sp + 632 >> 2] = 5;
+ HEAP32[sp + 640 >> 2] = 5;
break OL;
}
$227 = ($194 & -8) + $psize_0 | 0;
@@ -323,40 +323,40 @@ function _free$0(sp) {
HEAP32[$189 + $227 >> 2] = $227;
if (($p_0 | 0) != (HEAP32[25] | 0)) {
$psize_1 = $227;
- HEAP32[sp + 632 >> 2] = 1;
+ HEAP32[sp + 640 >> 2] = 1;
break OL;
}
HEAP32[22] = $227;
- HEAP32[sp + 632 >> 2] = 5;
+ HEAP32[sp + 640 >> 2] = 5;
break OL;
} while (0);
- HEAP32[sp + 416 >> 2] = $psize_1;
+ HEAP32[sp + 424 >> 2] = $psize_1;
return sp | 0;
}
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 + 208 >> 2] | 0;
- $p_0 = HEAP32[sp + 216 >> 2] | 0;
- $5 = HEAP32[sp + 8 >> 2] | 0;
- $21 = HEAP32[sp + 32 >> 2] | 0;
- $26 = HEAP32[sp + 48 >> 2] | 0;
- $10 = HEAP32[sp + 16 >> 2] | 0;
- $mem = HEAP32[sp + 0 >> 2] | 0;
- $25 = HEAP32[sp + 40 >> 2] | 0;
+ $psize_0 = HEAP32[sp + 216 >> 2] | 0;
+ $p_0 = HEAP32[sp + 224 >> 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;
+ $25 = HEAP32[sp + 48 >> 2] | 0;
OL : do {
if (($25 | 0) == (HEAP32[25] | 0)) {
if ((HEAP32[($mem + (($10 & -8) - 4) | 0) >> 2] & 3 | 0) != 3) {
$p_0 = $25;
$psize_0 = $26;
- HEAP32[sp + 632 >> 2] = 1;
+ HEAP32[sp + 648 >> 2] = 1;
break OL;
}
HEAP32[22] = $26;
HEAP32[($mem + (($10 & -8) - 4) | 0) >> 2] = HEAP32[($mem + (($10 & -8) - 4) | 0) >> 2] & -2;
HEAP32[$mem + ((-8 - $21 | 0) + 4) >> 2] = $26 | 1;
HEAP32[($mem + (($10 & -8) - 8) | 0) >> 2] = $26;
- HEAP32[sp + 632 >> 2] = 5;
+ HEAP32[sp + 648 >> 2] = 5;
break OL;
}
if ($21 >>> 0 < 256) {
@@ -377,7 +377,7 @@ function _free$1(sp) {
HEAP32[20] = HEAP32[20] & (1 << ($21 >>> 3) ^ -1);
$p_0 = $25;
$psize_0 = $26;
- HEAP32[sp + 632 >> 2] = 1;
+ HEAP32[sp + 648 >> 2] = 1;
break OL;
}
do {
@@ -398,7 +398,7 @@ function _free$1(sp) {
HEAP32[$_pre_phi307 >> 2] = $37;
$p_0 = $25;
$psize_0 = $26;
- HEAP32[sp + 632 >> 2] = 1;
+ HEAP32[sp + 648 >> 2] = 1;
break OL;
}
$69 = $mem + (-8 - $21 | 0) | 0;
@@ -465,7 +465,7 @@ function _free$1(sp) {
if (($72 | 0) == 0) {
$p_0 = $25;
$psize_0 = $26;
- HEAP32[sp + 632 >> 2] = 1;
+ HEAP32[sp + 648 >> 2] = 1;
break OL;
}
$120 = 384 + (HEAP32[($mem + ((-8 - $21 | 0) + 28) | 0) >> 2] << 2) | 0;
@@ -478,8 +478,8 @@ function _free$1(sp) {
HEAP32[21] = HEAP32[21] & (1 << HEAP32[($mem + ((-8 - $21 | 0) + 28) | 0) >> 2] ^ -1);
$p_0 = $25;
$psize_0 = $26;
- HEAP32[sp + 632 >> 2] = 2;
- HEAP32[sp + 640 >> 2] = 2;
+ HEAP32[sp + 648 >> 2] = 2;
+ HEAP32[sp + 652 >> 2] = 2;
break OL;
} else {
if ($72 >>> 0 < (HEAP32[24] | 0) >>> 0) {
@@ -493,8 +493,8 @@ function _free$1(sp) {
if (($R_1 | 0) == 0) {
$p_0 = $25;
$psize_0 = $26;
- HEAP32[sp + 632 >> 2] = 2;
- HEAP32[sp + 640 >> 2] = 2;
+ HEAP32[sp + 648 >> 2] = 2;
+ HEAP32[sp + 652 >> 2] = 2;
break OL;
}
}
@@ -519,7 +519,7 @@ function _free$1(sp) {
if (($164 | 0) == 0) {
$p_0 = $25;
$psize_0 = $26;
- HEAP32[sp + 632 >> 2] = 1;
+ HEAP32[sp + 648 >> 2] = 1;
break OL;
}
if ($164 >>> 0 < (HEAP32[24] | 0) >>> 0) {
@@ -529,24 +529,24 @@ function _free$1(sp) {
HEAP32[$164 + 24 >> 2] = $R_1;
$p_0 = $25;
$psize_0 = $26;
- HEAP32[sp + 632 >> 2] = 1;
+ HEAP32[sp + 648 >> 2] = 1;
break OL;
}
} while (0);
- HEAP32[sp + 216 >> 2] = $p_0;
- HEAP32[sp + 208 >> 2] = $psize_0;
+ HEAP32[sp + 224 >> 2] = $p_0;
+ HEAP32[sp + 216 >> 2] = $psize_0;
return sp | 0;
}
function _free$2(sp) {
sp = sp | 0;
var $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 + 16 >> 2] | 0;
- $mem = HEAP32[sp + 0 >> 2] | 0;
- $189 = HEAP32[sp + 224 >> 2] | 0;
- $p_0 = HEAP32[sp + 216 >> 2] | 0;
- $psize_0 = HEAP32[sp + 208 >> 2] | 0;
- $16 = HEAP32[sp + 24 >> 2] | 0;
- $194 = HEAP32[sp + 232 >> 2] | 0;
+ $10 = HEAP32[sp + 24 >> 2] | 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;
+ $16 = HEAP32[sp + 32 >> 2] | 0;
+ $194 = HEAP32[sp + 240 >> 2] | 0;
OL : do {
do {
if (($194 & 2 | 0) == 0) {
@@ -560,32 +560,32 @@ function _free$2(sp) {
HEAP32[22] = 0;
}
if ($204 >>> 0 <= (HEAP32[27] | 0) >>> 0) {
- HEAP32[sp + 632 >> 2] = 5;
+ HEAP32[sp + 656 >> 2] = 5;
brea