diff options
-rwxr-xr-x | tests/runner.py | 7 | ||||
-rw-r--r-- | tools/js-optimizer.js | 36 | ||||
-rw-r--r-- | tools/test-js-optimizer-asm-outline1-output.js | 81 | ||||
-rw-r--r-- | tools/test-js-optimizer-asm-outline2-output.js | 15 |
4 files changed, 62 insertions, 77 deletions
diff --git a/tests/runner.py b/tests/runner.py index 056a53de..1646d40a 100755 --- a/tests/runner.py +++ b/tests/runner.py @@ -11064,7 +11064,9 @@ f.close() curr = None return ret - for outlining_limit in [500, 1000, 2000, 5000, 0]: + for outlining_limit in [250, 500, 1000, 2000, 5000, 0]: + print '\n', outlining_limit, '\n' + # TODO: test without -g3, tell all sorts Popen([PYTHON, EMCC, src] + libs + ['-o', 'test.js', '-O2', '-g3', '-s', 'OUTLINING_LIMIT=%d' % outlining_limit] + args).communicate() assert os.path.exists('test.js') shutil.copyfile('test.js', '%d_test.js' % outlining_limit) @@ -11082,7 +11084,8 @@ 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(), { - 500: (290, 310), + 250: (330, 340), + 500: (270, 310), 1000: (350, 380), 2000: (470, 500), 5000: (800, 1100), diff --git a/tools/js-optimizer.js b/tools/js-optimizer.js index 5baac7f6..b598d779 100644 --- a/tools/js-optimizer.js +++ b/tools/js-optimizer.js @@ -3208,7 +3208,7 @@ function outline(ast) { 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]]]); } }); - reps.push(['stat', ['assign', true, ['name', 'sp'], makeAsmCoercion(['call', ['name', newIdent], [['name', 'sp']]], ASM_INT)]]); + reps.push(['stat', ['call', ['name', newIdent], [['name', 'sp']]]]); for (var v in codeInfo.writes) { 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))]]); @@ -3357,8 +3357,6 @@ function outline(ast) { 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]]]); } } - // add final return of sp. the model is that we send sp as the single param, and get it back out - code.push(['stat', ['return', makeAsmCoercion(['name', 'sp'], ASM_INT)]]); // finalize var newFunc = ['defun', newIdent, ['sp'], code]; var newAsmData = { params: { sp: ASM_INT }, vars: {} }; @@ -3366,7 +3364,8 @@ function outline(ast) { if (v != 'sp') newAsmData.vars[v] = getAsmType(v, asmData); } for (var v in codeInfo.writes) { - if (v != 'sp') newAsmData.vars[v] = getAsmType(v, asmData); + assert(v != 'sp'); // we send sp as a read-only parameter, cannot be written to in outlined code + newAsmData.vars[v] = getAsmType(v, asmData); } denormalizeAsm(newFunc, newAsmData); // add outline call markers (we cannot do later outlinings that cut through an outlining call) @@ -3398,24 +3397,35 @@ function outline(ast) { function outlineStatements(func, asmData, stats, maxSize) { level++; - printErr('outlineStatements: ' + [func[1], level, measureSize(func)]); + //printErr('outlineStatements: ' + [func[1], level, measureSize(func)]); var lastSize = measureSize(stats); if (lastSize < sizeToOutline) { level--; return } var ret = []; var sizeSeen = 0; var end = stats.length-1; var i = stats.length; - var minIndex = stats == getStatements(func) ? getFirstIndexInNormalized(func, asmData) : 0; var canRestart = false; + var minIndex = 0; + function calcMinIndex() { + if (stats == getStatements(func)) { + minIndex = getFirstIndexInNormalized(func, asmData); + for (var i = minIndex; i < stats.length; i++) { + var stat = stats[i]; + if (stat[0] == 'stat') stat = stat[1]; + if (stat[0] == 'assign' && stat[2][0] == 'name' && stat[2][1] == 'sp') minIndex = i+1; // cannot outline |sp = | + } + } + } while (1) { i--; + calcMinIndex(); if (i < minIndex) { // we might be done. but, if we have just outlined, do a further attempt from the beginning. // (but only if the total costs are not extravagant) var currSize = measureSize(stats); var outlinedSize = measureSize(ret); if (canRestart && currSize > 1.2*sizeToOutline && lastSize - currSize >= 0.75*sizeToOutline) { - printErr('restarting ' + func[1] + ' since ' + [currSize, outlinedSize, lastSize] + ' in level ' + level); + //printErr('restarting ' + func[1] + ' since ' + [currSize, outlinedSize, lastSize] + ' in level ' + level); lastSize = currSize; i = stats.length; end = stats.length-1; @@ -3431,7 +3441,7 @@ function outline(ast) { while (stat[0] === 'end-outline-call') { // we cannot outline through an outline call, so include all of it while (stats[--i][0] !== 'begin-outline-call') { - assert(i >= 1); + assert(i >= minIndex+1); assert(stats[i][0] !== 'end-outline-call'); } stat = stats[i]; @@ -3454,7 +3464,7 @@ function outline(ast) { }); if (ret.length > pre) { // we outlined recursively, reset our state here - printErr('successful outline in recursion ' + func[1] + ' due to recursive in level ' + level); + //printErr('successful outline in recursion ' + func[1] + ' due to recursive in level ' + level); end = i-1; sizeSeen = 0; canRestart = true; @@ -3488,8 +3498,12 @@ function outline(ast) { assert(sum == 0); // final decision and action if (sizeSeen >= sizeToOutline && sizeSeen <= maxSize) { - ret.push.apply(ret, doOutline(func, asmData, stats, i, end)); // outline [i, .. ,end] inclusive - printErr('performed outline on ' + func[1] + ' of ' + sizeSeen + ', func is now size ' + measureSize(func)); + assert(i >= minIndex); + 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)); + } sizeSeen = 0; end = i-1; canRestart = true; diff --git a/tools/test-js-optimizer-asm-outline1-output.js b/tools/test-js-optimizer-asm-outline1-output.js index 6c4ca85d..d63e4e5e 100644 --- a/tools/test-js-optimizer-asm-outline1-output.js +++ b/tools/test-js-optimizer-asm-outline1-output.js @@ -8,10 +8,10 @@ function lin() { c(4); HEAP32[sp + 16 >> 2] = 0; HEAP32[sp + 20 >> 2] = 0; - sp = lin$1(sp) | 0; + lin$1(sp); HEAP32[sp + 8 >> 2] = 0; HEAP32[sp + 12 >> 2] = 0; - sp = lin$0(sp) | 0; + lin$0(sp); STACKTOP = sp; } function lin2() { @@ -25,10 +25,10 @@ function lin2() { c(4); HEAP32[sp + 16 >> 2] = 0; HEAP32[sp + 20 >> 2] = 0; - sp = lin2$1(sp) | 0; + lin2$1(sp); HEAP32[sp + 8 >> 2] = 0; HEAP32[sp + 12 >> 2] = 0; - sp = lin2$0(sp) | 0; + lin2$0(sp); } STACKTOP = sp; } @@ -44,10 +44,10 @@ function lin3() { c(5); HEAP32[sp + 16 >> 2] = 0; HEAP32[sp + 20 >> 2] = 0; - sp = lin3$1(sp) | 0; + lin3$1(sp); HEAP32[sp + 8 >> 2] = 0; HEAP32[sp + 12 >> 2] = 0; - sp = lin3$0(sp) | 0; + lin3$0(sp); tempValue = HEAP32[sp + 8 >> 2] | 0; tempInt = HEAP32[sp + 12 >> 2] | 0; tempDouble = +HEAPF32[sp + 12 >> 2]; @@ -72,10 +72,10 @@ function lin4() { c(4); HEAP32[sp + 16 >> 2] = 0; HEAP32[sp + 20 >> 2] = 0; - sp = lin4$1(sp) | 0; + lin4$1(sp); HEAP32[sp + 8 >> 2] = 0; HEAP32[sp + 12 >> 2] = 0; - sp = lin4$0(sp) | 0; + lin4$0(sp); tempValue = HEAP32[sp + 8 >> 2] | 0; tempInt = HEAP32[sp + 12 >> 2] | 0; tempDouble = +HEAPF32[sp + 12 >> 2]; @@ -99,10 +99,10 @@ function lin5() { c(4); HEAP32[sp + 16 >> 2] = 0; HEAP32[sp + 20 >> 2] = 0; - sp = lin5$1(sp) | 0; + lin5$1(sp); HEAP32[sp + 8 >> 2] = 0; HEAP32[sp + 12 >> 2] = 0; - sp = lin5$0(sp) | 0; + lin5$0(sp); tempValue = HEAP32[sp + 8 >> 2] | 0; tempInt = HEAP32[sp + 12 >> 2] | 0; tempDouble = +HEAPF32[sp + 12 >> 2]; @@ -129,10 +129,10 @@ function mix() { c(7); HEAP32[sp + 16 >> 2] = 0; HEAP32[sp + 20 >> 2] = 0; - sp = mix$1(sp) | 0; + mix$1(sp); HEAP32[sp + 8 >> 2] = 0; HEAP32[sp + 12 >> 2] = 0; - sp = mix$0(sp) | 0; + mix$0(sp); tempValue = HEAP32[sp + 8 >> 2] | 0; tempInt = HEAP32[sp + 12 >> 2] | 0; tempDouble = +HEAPF32[sp + 12 >> 2]; @@ -174,12 +174,12 @@ function vars(x, y) { HEAP32[sp + 36 >> 2] = 0; HEAP32[sp + 8 >> 2] = x; HEAPF32[sp + 16 >> 2] = y; - sp = vars$1(sp) | 0; + vars$1(sp); HEAP32[sp + 24 >> 2] = 0; HEAP32[sp + 28 >> 2] = 0; HEAP32[sp + 8 >> 2] = x; HEAPF32[sp + 16 >> 2] = y; - sp = vars$0(sp) | 0; + vars$0(sp); STACKTOP = sp; } function vars2(x, y) { @@ -196,7 +196,7 @@ function vars2(x, y) { HEAP32[sp + 44 >> 2] = 0; HEAP32[sp + 24 >> 2] = a; HEAPF32[sp + 32 >> 2] = b; - sp = vars2$0(sp) | 0; + vars2$0(sp); a = HEAP32[sp + 24 >> 2] | 0; b = +HEAPF32[sp + 32 >> 2]; STACKTOP = sp; @@ -212,14 +212,14 @@ function vars3(x, y) { HEAP32[sp + 24 >> 2] = a; HEAP32[sp + 8 >> 2] = x; HEAPF32[sp + 16 >> 2] = y; - sp = vars3$1(sp) | 0; + vars3$1(sp); a = HEAP32[sp + 24 >> 2] | 0; 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; - sp = vars3$0(sp) | 0; + vars3$0(sp); a = HEAP32[sp + 24 >> 2] | 0; STACKTOP = sp; } @@ -236,7 +236,7 @@ function vars4(x, y) { HEAP32[sp + 8 >> 2] = x; HEAP32[sp + 24 >> 2] = a; HEAPF32[sp + 32 >> 2] = b; - sp = vars4$1(sp) | 0; + vars4$1(sp); b = +HEAPF32[sp + 32 >> 2]; a = HEAP32[sp + 24 >> 2] | 0; HEAP32[sp + 40 >> 2] = 0; @@ -244,7 +244,7 @@ function vars4(x, y) { HEAP32[sp + 24 >> 2] = a; HEAP32[sp + 8 >> 2] = x; HEAPF32[sp + 32 >> 2] = b; - sp = vars4$0(sp) | 0; + vars4$0(sp); a = HEAP32[sp + 24 >> 2] | 0; b = +HEAPF32[sp + 32 >> 2]; STACKTOP = sp; @@ -262,14 +262,14 @@ function vars_w_stack(x, y) { HEAP32[sp + 24 >> 2] = x; HEAP32[sp + 40 >> 2] = a; HEAPF32[sp + 48 >> 2] = b; - sp = vars_w_stack$1(sp) | 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; HEAP32[sp + 40 >> 2] = a; HEAPF32[sp + 48 >> 2] = b; - sp = vars_w_stack$0(sp) | 0; + vars_w_stack$0(sp); a = HEAP32[sp + 40 >> 2] | 0; b = +HEAPF32[sp + 48 >> 2]; } @@ -281,32 +281,32 @@ function chain() { HEAP32[sp + 56 >> 2] = 0; HEAP32[sp + 60 >> 2] = 0; HEAP32[sp + 8 >> 2] = helper$0; - sp = chain$5(sp) | 0; + chain$5(sp); helper$0 = HEAP32[sp + 8 >> 2] | 0; HEAP32[sp + 48 >> 2] = 0; HEAP32[sp + 52 >> 2] = 0; HEAP32[sp + 8 >> 2] = helper$0; - sp = chain$4(sp) | 0; + chain$4(sp); helper$0 = HEAP32[sp + 8 >> 2] | 0; HEAP32[sp + 40 >> 2] = 0; HEAP32[sp + 44 >> 2] = 0; HEAP32[sp + 8 >> 2] = helper$0; - sp = chain$3(sp) | 0; + chain$3(sp); helper$0 = HEAP32[sp + 8 >> 2] | 0; HEAP32[sp + 32 >> 2] = 0; HEAP32[sp + 36 >> 2] = 0; HEAP32[sp + 8 >> 2] = helper$0; - sp = chain$2(sp) | 0; + chain$2(sp); helper$0 = HEAP32[sp + 8 >> 2] | 0; HEAP32[sp + 24 >> 2] = 0; HEAP32[sp + 28 >> 2] = 0; HEAP32[sp + 8 >> 2] = helper$0; - sp = chain$1(sp) | 0; + chain$1(sp); helper$0 = HEAP32[sp + 8 >> 2] | 0; HEAP32[sp + 16 >> 2] = 0; HEAP32[sp + 20 >> 2] = 0; HEAP32[sp + 8 >> 2] = helper$0; - sp = chain$0(sp) | 0; + chain$0(sp); helper$0 = HEAP32[sp + 8 >> 2] | 0; STACKTOP = sp; } @@ -320,7 +320,6 @@ function lin$0(sp) { c(18); c(19); c(20); - return sp | 0; } function lin$1(sp) { sp = sp | 0; @@ -332,7 +331,6 @@ function lin$1(sp) { c(10); c(11); c(12); - return sp | 0; } function lin2$0(sp) { sp = sp | 0; @@ -344,7 +342,6 @@ function lin2$0(sp) { c(18); c(19); c(20); - return sp | 0; } function lin2$1(sp) { sp = sp | 0; @@ -356,7 +353,6 @@ function lin2$1(sp) { c(10); c(11); c(12); - return sp | 0; } function lin3$0(sp) { sp = sp | 0; @@ -372,7 +368,6 @@ function lin3$0(sp) { HEAP32[sp + 12 >> 2] = 10; break OL; } while (0); - return sp | 0; } function lin3$1(sp) { sp = sp | 0; @@ -384,7 +379,6 @@ function lin3$1(sp) { c(11); c(12); c(13); - return sp | 0; } function lin4$0(sp) { sp = sp | 0; @@ -400,7 +394,6 @@ function lin4$0(sp) { HEAP32[sp + 8 >> 2] = 1; break OL; } while (0); - return sp | 0; } function lin4$1(sp) { sp = sp | 0; @@ -412,7 +405,6 @@ function lin4$1(sp) { c(10); c(11); c(12); - return sp | 0; } function lin5$0(sp) { sp = sp | 0; @@ -428,7 +420,6 @@ function lin5$0(sp) { HEAP32[sp + 8 >> 2] = 3; break OL; } while (0); - return sp | 0; } function lin5$1(sp) { sp = sp | 0; @@ -440,7 +431,6 @@ function lin5$1(sp) { c(10); c(11); c(12); - return sp | 0; } function mix$0(sp) { sp = sp | 0; @@ -467,7 +457,6 @@ function mix$0(sp) { HEAP32[sp + 12 >> 2] = 3; break OL; } while (0); - return sp | 0; } function mix$1(sp) { sp = sp | 0; @@ -479,7 +468,6 @@ function mix$1(sp) { c(13); c(14); c(15); - return sp | 0; } function vars$0(sp) { sp = sp | 0; @@ -490,7 +478,6 @@ function vars$0(sp) { c(6 + y * x); c(7 + (x + y)); c(8 + y * x); - return sp | 0; } function vars$1(sp) { sp = sp | 0; @@ -501,7 +488,6 @@ function vars$1(sp) { c(2 + y * x); c(3 + (x + y)); c(4 + y * x); - return sp | 0; } function vars2$0(sp) { sp = sp | 0; @@ -514,7 +500,6 @@ function vars2$0(sp) { b = c(6 + b); HEAP32[sp + 24 >> 2] = a; HEAPF32[sp + 32 >> 2] = b; - return sp | 0; } function vars3$0(sp) { sp = sp | 0; @@ -527,7 +512,6 @@ function vars3$0(sp) { a = c(6 + y * x); a = c(7 + a); HEAP32[sp + 24 >> 2] = a; - return sp | 0; } function vars3$1(sp) { sp = sp | 0; @@ -540,7 +524,6 @@ function vars3$1(sp) { a = c(2 + y * x); a = c(3 + a); HEAP32[sp + 24 >> 2] = a; - return sp | 0; } function vars4$0(sp) { sp = sp | 0; @@ -554,7 +537,6 @@ function vars4$0(sp) { b = c(7 + a + x); HEAP32[sp + 24 >> 2] = a; HEAPF32[sp + 32 >> 2] = b; - return sp | 0; } function vars4$1(sp) { sp = sp | 0; @@ -569,7 +551,6 @@ function vars4$1(sp) { a = c(3 + a); HEAPF32[sp + 32 >> 2] = b; HEAP32[sp + 24 >> 2] = a; - return sp | 0; } function vars_w_stack$0(sp) { sp = sp | 0; @@ -583,7 +564,6 @@ function vars_w_stack$0(sp) { STACKTOP = sp; HEAP32[sp + 40 >> 2] = a; HEAPF32[sp + 48 >> 2] = b; - return sp | 0; } function vars_w_stack$1(sp) { sp = sp | 0; @@ -598,7 +578,6 @@ function vars_w_stack$1(sp) { a = c(3 + a); HEAPF32[sp + 48 >> 2] = b; HEAP32[sp + 40 >> 2] = a; - return sp | 0; } function chain$0(sp) { sp = sp | 0; @@ -617,7 +596,6 @@ function chain$0(sp) { print(99); } HEAP32[sp + 8 >> 2] = helper$0; - return sp | 0; } function chain$1(sp) { sp = sp | 0; @@ -632,7 +610,6 @@ function chain$1(sp) { print(10); } HEAP32[sp + 8 >> 2] = helper$0; - return sp | 0; } function chain$2(sp) { sp = sp | 0; @@ -647,7 +624,6 @@ function chain$2(sp) { print(8); } HEAP32[sp + 8 >> 2] = helper$0; - return sp | 0; } function chain$3(sp) { sp = sp | 0; @@ -662,7 +638,6 @@ function chain$3(sp) { print(6); } HEAP32[sp + 8 >> 2] = helper$0; - return sp | 0; } function chain$4(sp) { sp = sp | 0; @@ -677,7 +652,6 @@ function chain$4(sp) { print(4); } HEAP32[sp + 8 >> 2] = helper$0; - return sp | 0; } function chain$5(sp) { sp = sp | 0; @@ -692,6 +666,5 @@ function chain$5(sp) { print(2); } HEAP32[sp + 8 >> 2] = helper$0; - return sp | 0; } diff --git a/tools/test-js-optimizer-asm-outline2-output.js b/tools/test-js-optimizer-asm-outline2-output.js index 33b37956..1f1e3776 100644 --- a/tools/test-js-optimizer-asm-outline2-output.js +++ b/tools/test-js-optimizer-asm-outline2-output.js @@ -13,10 +13,10 @@ 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); HEAP32[sp + 16 >> 2] = 0; HEAP32[sp + 20 >> 2] = 0; - sp = linear$1(sp) | 0; + linear$1(sp); HEAP32[sp + 8 >> 2] = 0; HEAP32[sp + 12 >> 2] = 0; - sp = linear$0(sp) | 0; + linear$0(sp); STACKTOP = sp; } function _free($mem) { @@ -59,7 +59,7 @@ function _free($mem) { HEAP32[sp + 16 >> 2] = $5; HEAP32[sp + 224 >> 2] = $p_0; HEAP32[sp + 216 >> 2] = $psize_0; - sp = _free$1(sp) | 0; + _free$1(sp); $p_0 = HEAP32[sp + 224 >> 2] | 0; $psize_0 = HEAP32[sp + 216 >> 2] | 0; tempValue = HEAP32[sp + 672 >> 2] | 0; @@ -105,7 +105,7 @@ function _free($mem) { HEAP32[sp + 232 >> 2] = $189; HEAP32[sp + 8 >> 2] = $mem; HEAP32[sp + 24 >> 2] = $10; - sp = _free$2(sp) | 0; + _free$2(sp); tempValue = HEAP32[sp + 680 >> 2] | 0; tempInt = HEAP32[sp + 684 >> 2] | 0; tempDouble = +HEAPF32[sp + 684 >> 2]; @@ -130,7 +130,6 @@ function linear$0(sp) { 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); - return sp | 0; } function linear$1(sp) { sp = sp | 0; @@ -147,7 +146,6 @@ function linear$1(sp) { 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); - return sp | 0; } function _free$0(sp) { sp = sp | 0; @@ -339,7 +337,6 @@ function _free$0(sp) { break OL; } while (0); HEAP32[sp + 424 >> 2] = $psize_1; - return sp | 0; } function _free$1(sp) { sp = sp | 0; @@ -543,7 +540,6 @@ function _free$1(sp) { } while (0); HEAP32[sp + 224 >> 2] = $p_0; HEAP32[sp + 216 >> 2] = $psize_0; - return sp | 0; } function _free$2(sp) { sp = sp | 0; @@ -587,7 +583,7 @@ function _free$2(sp) { HEAP32[sp + 8 >> 2] = $mem; HEAP32[sp + 24 >> 2] = $10; HEAP32[sp + 424 >> 2] = $psize_1; - sp = _free$0(sp) | 0; + _free$0(sp); $psize_1 = HEAP32[sp + 424 >> 2] | 0; tempValue = HEAP32[sp + 664 >> 2] | 0; tempInt = HEAP32[sp + 668 >> 2] | 0; @@ -735,6 +731,5 @@ function _free$2(sp) { HEAP32[sp + 680 >> 2] = 5; break OL; } while (0); - return sp | 0; } |