aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xtests/runner.py7
-rw-r--r--tools/js-optimizer.js36
-rw-r--r--tools/test-js-optimizer-asm-outline1-output.js81
-rw-r--r--tools/test-js-optimizer-asm-outline2-output.js15
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;
}