diff options
author | Alon Zakai <alonzakai@gmail.com> | 2013-07-26 14:44:16 -0700 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2013-07-26 14:51:29 -0700 |
commit | 9987b9a039052cb84f33127e5b2c3df58f349d7c (patch) | |
tree | 35b8fafd420fbe84a6ffc5e1e1aef11263238f57 | |
parent | b5cff5e14f352b7deadd0f674b5fe987650bcf39 (diff) |
flatten if-chains into smaller chains, chunking reduces the overhead of flattening them out entirely
-rwxr-xr-x | tests/runner.py | 6 | ||||
-rw-r--r-- | tools/js-optimizer.js | 50 | ||||
-rw-r--r-- | tools/test-js-optimizer-asm-outline1-output.js | 92 | ||||
-rw-r--r-- | tools/test-js-optimizer-asm-outline2-output.js | 240 |
4 files changed, 224 insertions, 164 deletions
diff --git a/tests/runner.py b/tests/runner.py index 15f0070a..fc41c8a1 100755 --- a/tests/runner.py +++ b/tests/runner.py @@ -11091,11 +11091,11 @@ f.close() self.get_library('zlib', os.path.join('libz.a'), make_args=['libz.a']), open(path_from_root('tests', 'zlib', 'ref.txt'), 'r').read(), { - 100: (190, 210), + 100: (190, 250), 250: (300, 330), 500: (250, 310), - 1000: (330, 400), - 2000: (450, 500), + 1000: (230, 300), + 2000: (380, 450), 5000: (800, 1100), 0: (1500, 1800) }, diff --git a/tools/js-optimizer.js b/tools/js-optimizer.js index 95d9b82f..29b36cad 100644 --- a/tools/js-optimizer.js +++ b/tools/js-optimizer.js @@ -3001,7 +3001,7 @@ function outline(ast) { // Try to flatten out code as much as possible, to make outlining more feasible. function flatten(func, asmData) { - var minSize = sizeToOutline/3; + var minSize = sizeToOutline; var helperId = 0; function getHelper() { while (1) { @@ -3012,18 +3012,22 @@ function outline(ast) { } } } + var ignore = []; traverse(func, function(node) { var stats = getStatements(node); if (stats) { for (var i = 0; i < stats.length; i++) { var node = stats[i]; // step over param + if (ignore.indexOf(node) >= 0) continue; + if (node[0] == 'stat') node = node[1]; + if (ignore.indexOf(node) >= 0) continue; var type = node[0]; if (measureSize(node) >= minSize) { if (type === 'if' && node[3]) { var reps = []; var helper = getHelper(); // clear helper - reps.push(['stat', ['assign', true, ['name', helper], ['num', 1]]]); + reps.push(['stat', ['assign', true, ['name', helper], ['num', 1]]]); // 1 means continue in ifs // gather parts var parts = []; var curr = node; @@ -3036,13 +3040,41 @@ function outline(ast) { break; } } - // generate flattened code + // chunkify. Each chunk is a chain of if-elses, with the new overhead just on entry and exit + var chunks = []; + var currSize = 0; + var currChunk = []; parts.forEach(function(part) { - var condition = ['name', helper]; - if (part.condition) condition = ['conditional', condition, part.condition, ['num', 0]]; - assert(part.body[0] == 'block'); - reps.push(makeIf(condition, part.body[1])); - getStatements(part.body).unshift(['stat', ['assign', true, ['name', helper], ['num', 0]]]); + var size = (part.condition ? measureSize(part.condition) : 0) + measureSize(part.body) + 5; // add constant for overhead of extra code + assert(size > 0); + if (size + currSize >= minSize && currSize) { + chunks.push(currChunk); + currChunk = []; + currSize = 0; + } + currChunk.push(part); + currSize += size; + }); + assert(currSize); + chunks.push(currChunk); + // generate flattened code + chunks.forEach(function(chunk) { + var pre = ['stat', ['assign', true, ['name', helper], ['num', 0]]]; + var chain = null, tail = null; + chunk.forEach(function(part) { + // add to chain + var contents = makeIf(part.condition || ['num', 1], part.body[1]); + if (chain) { + tail[3] = contents; + } else { + chain = contents; + ignore.push(contents); + } + tail = contents; + }); + // if none of the ifs were entered, in the final else note that we need to continue + tail[3] = ['block', [['stat', ['assign', true, ['name', helper], ['num', 1]]]]]; + reps.push(makeIf(['name', helper], [pre, chain])); }); // replace code and update i stats.splice.apply(stats, [i, 1].concat(reps)); @@ -3504,7 +3536,7 @@ function outline(ast) { var newFuncs = doOutline(func, asmData, stats, i, end); // outline [i, .. ,end] inclusive if (newFuncs.length) { ret.push.apply(ret, newFuncs); - printErr('performed outline on ' + func[1] + ' of ' + sizeSeen + ', func is now size ' + measureSize(func)); + printErr('performed outline on ' + func[1] + ' of ' + sizeSeen + ', func is now size ' + measureSize(func) + ' ==> ' + newFuncs[0][1]); } sizeSeen = 0; end = i-1; diff --git a/tools/test-js-optimizer-asm-outline1-output.js b/tools/test-js-optimizer-asm-outline1-output.js index 65fbd6a5..5027f680 100644 --- a/tools/test-js-optimizer-asm-outline1-output.js +++ b/tools/test-js-optimizer-asm-outline1-output.js @@ -276,7 +276,7 @@ function vars_w_stack(x, y) { function chain() { var helper$0 = 0, sp = 0; sp = STACKTOP; - STACKTOP = STACKTOP + 352 | 0; + STACKTOP = STACKTOP + 336 | 0; helper$0 = 1; HEAP32[sp + 56 >> 2] = 0; HEAP32[sp + 60 >> 2] = 0; @@ -583,17 +583,23 @@ function chain$0(sp) { sp = sp | 0; var helper$0 = 0; helper$0 = HEAP32[sp + 8 >> 2] | 0; - if (helper$0 ? x == 11 : 0) { - helper$0 = 0; - print(11); - } - if (helper$0 ? x == 12 : 0) { + if (helper$0) { helper$0 = 0; - print(12); + if (x == 11) { + print(11); + } else if (x == 12) { + print(12); + } else { + helper$0 = 1; + } } if (helper$0) { helper$0 = 0; - print(99); + if (1) { + print(99); + } else { + helper$0 = 1; + } } HEAP32[sp + 8 >> 2] = helper$0; } @@ -601,13 +607,15 @@ function chain$1(sp) { sp = sp | 0; var helper$0 = 0; helper$0 = HEAP32[sp + 8 >> 2] | 0; - if (helper$0 ? x == 9 : 0) { - helper$0 = 0; - print(9); - } - if (helper$0 ? x == 10 : 0) { + if (helper$0) { helper$0 = 0; - print(10); + if (x == 9) { + print(9); + } else if (x == 10) { + print(10); + } else { + helper$0 = 1; + } } HEAP32[sp + 8 >> 2] = helper$0; } @@ -615,13 +623,15 @@ function chain$2(sp) { sp = sp | 0; var helper$0 = 0; helper$0 = HEAP32[sp + 8 >> 2] | 0; - if (helper$0 ? x == 7 : 0) { - helper$0 = 0; - print(7); - } - if (helper$0 ? x == 8 : 0) { + if (helper$0) { helper$0 = 0; - print(8); + if (x == 7) { + print(7); + } else if (x == 8) { + print(8); + } else { + helper$0 = 1; + } } HEAP32[sp + 8 >> 2] = helper$0; } @@ -629,13 +639,15 @@ function chain$3(sp) { sp = sp | 0; var helper$0 = 0; helper$0 = HEAP32[sp + 8 >> 2] | 0; - if (helper$0 ? x == 5 : 0) { - helper$0 = 0; - print(5); - } - if (helper$0 ? x == 6 : 0) { + if (helper$0) { helper$0 = 0; - print(6); + if (x == 5) { + print(5); + } else if (x == 6) { + print(6); + } else { + helper$0 = 1; + } } HEAP32[sp + 8 >> 2] = helper$0; } @@ -643,13 +655,15 @@ function chain$4(sp) { sp = sp | 0; var helper$0 = 0; helper$0 = HEAP32[sp + 8 >> 2] | 0; - if (helper$0 ? x == 3 : 0) { - helper$0 = 0; - print(3); - } - if (helper$0 ? x == 4 : 0) { + if (helper$0) { helper$0 = 0; - print(4); + if (x == 3) { + print(3); + } else if (x == 4) { + print(4); + } else { + helper$0 = 1; + } } HEAP32[sp + 8 >> 2] = helper$0; } @@ -657,13 +671,15 @@ function chain$5(sp) { sp = sp | 0; var helper$0 = 0; helper$0 = HEAP32[sp + 8 >> 2] | 0; - if (helper$0 ? x == 1 : 0) { - helper$0 = 0; - print(1); - } - if (helper$0 ? x == 2 : 0) { + if (helper$0) { helper$0 = 0; - print(2); + if (x == 1) { + print(1); + } else if (x == 2) { + print(2); + } else { + helper$0 = 1; + } } HEAP32[sp + 8 >> 2] = helper$0; } diff --git a/tools/test-js-optimizer-asm-outline2-output.js b/tools/test-js-optimizer-asm-outline2-output.js index abff54cb..9f0be278 100644 --- a/tools/test-js-optimizer-asm-outline2-output.js +++ b/tools/test-js-optimizer-asm-outline2-output.js @@ -38,54 +38,62 @@ function _free($mem) { $16 = $mem + (($10 & -8) - 8) | 0; L621 : do { helper$0 = 1; - if (helper$0 ? ($10 & 1 | 0) == 0 : 0) { + if (helper$0) { helper$0 = 0; - $21 = HEAP32[($mem - 8 | 0) >> 2] | 0; - if (($10 & 3 | 0) == 0) { - return; - } - $25 = $mem + (-8 - $21 | 0) | 0; - $26 = $21 + ($10 & -8) | 0; - if (($mem + (-8 - $21 | 0) | 0) >>> 0 < $5 >>> 0) { - _abort(); - } - HEAP32[sp + 672 >> 2] = 0; - HEAP32[sp + 676 >> 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; - _free$1(sp); - $p_0 = HEAP32[sp + 224 >> 2] | 0; - $psize_0 = HEAP32[sp + 216 >> 2] | 0; - tempValue = HEAP32[sp + 672 >> 2] | 0; - tempInt = HEAP32[sp + 676 >> 2] | 0; - tempDouble = +HEAPF32[sp + 676 >> 2]; - HEAP32[sp + 672 >> 2] = 0; - HEAP32[sp + 676 >> 2] = 0; - if ((tempValue | 0) == 5) { - return; - } - if ((tempValue | 0) == 1) { - break; - } - if ((tempValue | 0) == 2) { - switch (tempInt | 0) { - case 2: - { - break L621; + if (($10 & 1 | 0) == 0) { + $21 = HEAP32[($mem - 8 | 0) >> 2] | 0; + if (($10 & 3 | 0) == 0) { + return; + } + $25 = $mem + (-8 - $21 | 0) | 0; + $26 = $21 + ($10 & -8) | 0; + 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 + 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; + _free$1(sp); + $p_0 = HEAP32[sp + 224 >> 2] | 0; + $psize_0 = HEAP32[sp + 216 >> 2] | 0; + tempValue = HEAP32[sp + 664 >> 2] | 0; + tempInt = HEAP32[sp + 668 >> 2] | 0; + tempDouble = +HEAPF32[sp + 668 >> 2]; + HEAP32[sp + 664 >> 2] = 0; + HEAP32[sp + 668 >> 2] = 0; + if ((tempValue | 0) == 5) { + return; + } + if ((tempValue | 0) == 1) { + break; + } + if ((tempValue | 0) == 2) { + switch (tempInt | 0) { + case 2: + { + break L621; + } } } + } else { + helper$0 = 1; } } if (helper$0) { helper$0 = 0; - $p_0 = $mem - 8 | 0; - $psize_0 = $10 & -8; + if (1) { + $p_0 = $mem - 8 | 0; + $psize_0 = $10 & -8; + } else { + helper$0 = 1; + } } } while (0); $189 = $p_0; @@ -96,8 +104,8 @@ function _free($mem) { if (($194 & 1 | 0) == 0) { _abort(); } - HEAP32[sp + 680 >> 2] = 0; - HEAP32[sp + 684 >> 2] = 0; + HEAP32[sp + 672 >> 2] = 0; + HEAP32[sp + 676 >> 2] = 0; HEAP32[sp + 240 >> 2] = $194; HEAP32[sp + 32 >> 2] = $16; HEAP32[sp + 216 >> 2] = $psize_0; @@ -106,11 +114,11 @@ function _free($mem) { HEAP32[sp + 8 >> 2] = $mem; HEAP32[sp + 24 >> 2] = $10; _free$2(sp); - tempValue = HEAP32[sp + 680 >> 2] | 0; - tempInt = HEAP32[sp + 684 >> 2] | 0; - tempDouble = +HEAPF32[sp + 684 >> 2]; - HEAP32[sp + 680 >> 2] = 0; - HEAP32[sp + 684 >> 2] = 0; + tempValue = HEAP32[sp + 672 >> 2] | 0; + tempInt = HEAP32[sp + 676 >> 2] | 0; + tempDouble = +HEAPF32[sp + 676 >> 2]; + HEAP32[sp + 672 >> 2] = 0; + HEAP32[sp + 676 >> 2] = 0; if ((tempValue | 0) == 5) { return; } @@ -149,7 +157,7 @@ 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, helper$2 = 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; + 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; @@ -165,14 +173,12 @@ function _free$0(sp) { HEAP32[25] = $p_0; HEAP32[$p_0 + 4 >> 2] = $220 | 1; HEAP32[$189 + $220 >> 2] = $220; - HEAP32[sp + 664 >> 2] = 5; + HEAP32[sp + 656 >> 2] = 5; break OL; } $227 = ($194 & -8) + $psize_0 | 0; L726 : do { - helper$2 = 1; - if (helper$2 ? $194 >>> 0 < 256 : 0) { - helper$2 = 0; + if ($194 >>> 0 < 256) { $233 = HEAP32[$mem + ($10 & -8) >> 2] | 0; $236 = HEAP32[$mem + ($10 & -8 | 4) >> 2] | 0; do { @@ -206,9 +212,7 @@ function _free$0(sp) { } while (0); HEAP32[$233 + 12 >> 2] = $236; HEAP32[$_pre_phi305 >> 2] = $233; - } - if (helper$2) { - helper$2 = 0; + } else { $267 = $mem + (($10 & -8) - 8) | 0; $270 = HEAP32[$mem + (($10 & -8) + 16) >> 2] | 0; $273 = HEAP32[$mem + ($10 & -8 | 4) >> 2] | 0; @@ -329,11 +333,11 @@ function _free$0(sp) { HEAP32[$189 + $227 >> 2] = $227; if (($p_0 | 0) != (HEAP32[25] | 0)) { $psize_1 = $227; - HEAP32[sp + 664 >> 2] = 1; + HEAP32[sp + 656 >> 2] = 1; break OL; } HEAP32[22] = $227; - HEAP32[sp + 664 >> 2] = 5; + HEAP32[sp + 656 >> 2] = 5; break OL; } while (0); HEAP32[sp + 424 >> 2] = $psize_1; @@ -354,14 +358,14 @@ function _free$1(sp) { if ((HEAP32[($mem + (($10 & -8) - 4) | 0) >> 2] & 3 | 0) != 3) { $p_0 = $25; $psize_0 = $26; - HEAP32[sp + 672 >> 2] = 1; + HEAP32[sp + 664 >> 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 + 672 >> 2] = 5; + HEAP32[sp + 664 >> 2] = 5; break OL; } if ($21 >>> 0 < 256) { @@ -382,7 +386,7 @@ function _free$1(sp) { HEAP32[20] = HEAP32[20] & (1 << ($21 >>> 3) ^ -1); $p_0 = $25; $psize_0 = $26; - HEAP32[sp + 672 >> 2] = 1; + HEAP32[sp + 664 >> 2] = 1; break OL; } do { @@ -403,7 +407,7 @@ function _free$1(sp) { HEAP32[$_pre_phi307 >> 2] = $37; $p_0 = $25; $psize_0 = $26; - HEAP32[sp + 672 >> 2] = 1; + HEAP32[sp + 664 >> 2] = 1; break OL; } $69 = $mem + (-8 - $21 | 0) | 0; @@ -470,7 +474,7 @@ function _free$1(sp) { if (($72 | 0) == 0) { $p_0 = $25; $psize_0 = $26; - HEAP32[sp + 672 >> 2] = 1; + HEAP32[sp + 664 >> 2] = 1; break OL; } $120 = 384 + (HEAP32[($mem + ((-8 - $21 | 0) + 28) | 0) >> 2] << 2) | 0; @@ -483,8 +487,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 + 672 >> 2] = 2; - HEAP32[sp + 676 >> 2] = 2; + HEAP32[sp + 664 >> 2] = 2; + HEAP32[sp + 668 >> 2] = 2; break OL; } else { if ($72 >>> 0 < (HEAP32[24] | 0) >>> 0) { @@ -498,8 +502,8 @@ function _free$1(sp) { if (($R_1 | 0) == 0) { $p_0 = $25; $psize_0 = $26; - HEAP32[sp + 672 >> 2] = 2; - HEAP32[sp + 676 >> 2] = 2; + HEAP32[sp + 664 >> 2] = 2; + HEAP32[sp + 668 >> 2] = 2; break OL; } } @@ -524,7 +528,7 @@ function _free$1(sp) { if (($164 | 0) == 0) { $p_0 = $25; $psize_0 = $26; - HEAP32[sp + 672 >> 2] = 1; + HEAP32[sp + 664 >> 2] = 1; break OL; } if ($164 >>> 0 < (HEAP32[24] | 0) >>> 0) { @@ -534,7 +538,7 @@ function _free$1(sp) { HEAP32[$164 + 24 >> 2] = $R_1; $p_0 = $25; $psize_0 = $26; - HEAP32[sp + 672 >> 2] = 1; + HEAP32[sp + 664 >> 2] = 1; break OL; } } while (0); @@ -554,56 +558,64 @@ function _free$2(sp) { OL : do { do { helper$1 = 1; - if (helper$1 ? ($194 & 2 | 0) == 0 : 0) { + if (helper$1) { helper$1 = 0; - if (($16 | 0) == (HEAP32[26] | 0)) { - $204 = (HEAP32[23] | 0) + $psize_0 | 0; - HEAP32[23] = $204; - HEAP32[26] = $p_0; - HEAP32[$p_0 + 4 >> 2] = $204 | 1; - if (($p_0 | 0) == (HEAP32[25] | 0)) { - HEAP32[25] = 0; - HEAP32[22] = 0; + if (($194 & 2 | 0) == 0) { + if (($16 | 0) == (HEAP32[26] | 0)) { + $204 = (HEAP32[23] | 0) + $psize_0 | 0; + HEAP32[23] = $204; + HEAP32[26] = $p_0; + HEAP32[$p_0 + 4 >> 2] = $204 | 1; + if (($p_0 | 0) == (HEAP32[25] | 0)) { + HEAP32[25] = 0; + HEAP32[22] = 0; + } + if ($204 >>> 0 <= (HEAP32[27] | 0) >>> 0) { + HEAP32[sp + 672 >> 2] = 5; + break OL; + } + _sys_trim(0) | 0; + HEAP32[sp + 672 >> 2] = 5; + break OL; } - if ($204 >>> 0 <= (HEAP32[27] | 0) >>> 0) { - HEAP32[sp + 680 >> 2] = 5; + HEAP32[sp + 656 >> 2] = 0; + HEAP32[sp + 660 >> 2] = 0; + 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; + _free$0(sp); + $psize_1 = HEAP32[sp + 424 >> 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) { + HEAP32[sp + 672 >> 2] = 5; break OL; } - _sys_trim(0) | 0; - HEAP32[sp + 680 >> 2] = 5; - break OL; - } - HEAP32[sp + 664 >> 2] = 0; - HEAP32[sp + 668 >> 2] = 0; - 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; - _free$0(sp); - $psize_1 = HEAP32[sp + 424 >> 2] | 0; - tempValue = HEAP32[sp + 664 >> 2] | 0; - tempInt = HEAP32[sp + 668 >> 2] | 0; - tempDouble = +HEAPF32[sp + 668 >> 2]; - HEAP32[sp + 664 >> 2] = 0; - HEAP32[sp + 668 >> 2] = 0; - if ((tempValue | 0) == 5) { - HEAP32[sp + 680 >> 2] = 5; - break OL; - } - if ((tempValue | 0) == 1) { - break; + if ((tempValue | 0) == 1) { + break; + } + } else { + helper$1 = 1; } } if (helper$1) { helper$1 = 0; - HEAP32[($mem + (($10 & -8) - 4) | 0) >> 2] = $194 & -2; - HEAP32[$p_0 + 4 >> 2] = $psize_0 | 1; - HEAP32[$189 + $psize_0 >> 2] = $psize_0; - $psize_1 = $psize_0; + if (1) { + HEAP32[($mem + (($10 & -8) - 4) | 0) >> 2] = $194 & -2; + HEAP32[$p_0 + 4 >> 2] = $psize_0 | 1; + HEAP32[$189 + $psize_0 >> 2] = $psize_0; + $psize_1 = $psize_0; + } else { + helper$1 = 1; + } } } while (0); $390 = $psize_1 >>> 3; @@ -628,7 +640,7 @@ function _free$2(sp) { HEAP32[$F16_0 + 12 >> 2] = $p_0; HEAP32[$p_0 + 8 >> 2] = $F16_0; HEAP32[$p_0 + 12 >> 2] = 120 + ($390 << 1 << 2) | 0; - HEAP32[sp + 680 >> 2] = 5; + HEAP32[sp + 672 >> 2] = 5; break OL; } $414 = $p_0; @@ -715,7 +727,7 @@ function _free$2(sp) { if (($501 | 0) == 0) { $sp_0_in_i = 536; } else { - HEAP32[sp + 680 >> 2] = 5; + HEAP32[sp + 672 >> 2] = 5; break OL; } while (1) { @@ -728,7 +740,7 @@ function _free$2(sp) { } HEAP32[28] = -1; STACKTOP = sp; - HEAP32[sp + 680 >> 2] = 5; + HEAP32[sp + 672 >> 2] = 5; break OL; } while (0); } |