diff options
-rw-r--r-- | tools/js-optimizer.js | 49 | ||||
-rw-r--r-- | tools/test-js-optimizer-asm-outline1-output.js | 282 | ||||
-rw-r--r-- | tools/test-js-optimizer-asm-outline2-output.js | 190 |
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; break OL; } _sys_trim(0) | 0; - HEAP32[sp + 632 >> 2] = 5; + HEAP32[sp + 656 >> 2] = 5; break OL; } - HEAP32[sp + 632 >> 2] = 0; HEAP32[sp + 640 >> 2] = 0; - HEAP32[sp + 24 >> 2] = $16; - HEAP32[sp + 208 >> 2] = $psize_0; |