aboutsummaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
Diffstat (limited to 'tools')
-rw-r--r--tools/js-optimizer.js3
-rw-r--r--tools/test-js-optimizer-asm-outline1-output.js91
-rw-r--r--tools/test-js-optimizer-asm-outline2-output.js414
-rw-r--r--tools/test-js-optimizer-asm-outline3-output.js28
-rw-r--r--tools/test-js-optimizer-asm-outline3.js30
5 files changed, 285 insertions, 281 deletions
diff --git a/tools/js-optimizer.js b/tools/js-optimizer.js
index cd6db6a4..2f11fcab 100644
--- a/tools/js-optimizer.js
+++ b/tools/js-optimizer.js
@@ -2873,6 +2873,7 @@ function outline(ast) {
defs[name] = node;
} else {
if (name in asmData.params) {
+ assignments[name] = (assignments[name] || 1) + 1; // init to 1 for initial parameter assignment
considered[name] = true; // this parameter is not ssa, it must be in a hand-optimized function, so it is not trivial
}
}
@@ -3535,7 +3536,7 @@ function outline(ast) {
var size = measureSize(func);
if (size >= sizeToOutline) {
printErr('trying to reduce the size of ' + func[1] + ' which is ' + size + ' (>= ' + sizeToOutline + ')');
- //aggressiveVariableElimination(func, asmData); // TODO: debug it, it does the wrong thing on hand-written memset
+ aggressiveVariableElimination(func, asmData);
flatten(func, asmData);
analyzeFunction(func, asmData);
var stats = getStatements(func);
diff --git a/tools/test-js-optimizer-asm-outline1-output.js b/tools/test-js-optimizer-asm-outline1-output.js
index 9c6aa7c8..65fbd6a5 100644
--- a/tools/test-js-optimizer-asm-outline1-output.js
+++ b/tools/test-js-optimizer-asm-outline1-output.js
@@ -167,22 +167,18 @@ function mix() {
function vars(x, y) {
x = x | 0;
y = +y;
- var a = 0, b = +0, sp = 0;
+ var sp = 0;
sp = STACKTOP;
STACKTOP = STACKTOP + 152 | 0;
- HEAP32[sp + 48 >> 2] = 0;
- HEAP32[sp + 52 >> 2] = 0;
- HEAP32[sp + 24 >> 2] = a;
+ HEAP32[sp + 32 >> 2] = 0;
+ HEAP32[sp + 36 >> 2] = 0;
HEAP32[sp + 8 >> 2] = x;
HEAPF32[sp + 16 >> 2] = y;
- HEAPF32[sp + 32 >> 2] = b;
vars$1(sp);
- a = HEAP32[sp + 24 >> 2] | 0;
- b = +HEAPF32[sp + 32 >> 2];
- HEAP32[sp + 40 >> 2] = 0;
- HEAP32[sp + 44 >> 2] = 0;
- HEAPF32[sp + 32 >> 2] = b;
- HEAP32[sp + 24 >> 2] = a;
+ HEAP32[sp + 24 >> 2] = 0;
+ HEAP32[sp + 28 >> 2] = 0;
+ HEAP32[sp + 8 >> 2] = x;
+ HEAPF32[sp + 16 >> 2] = y;
vars$0(sp);
STACKTOP = sp;
}
@@ -208,23 +204,21 @@ function vars2(x, y) {
function vars3(x, y) {
x = x | 0;
y = +y;
- var a = 0, b = +0, sp = 0;
+ var a = 0, sp = 0;
sp = STACKTOP;
- STACKTOP = STACKTOP + 168 | 0;
- a = x + y;
- HEAP32[sp + 48 >> 2] = 0;
- HEAP32[sp + 52 >> 2] = 0;
- HEAPF32[sp + 32 >> 2] = b;
- HEAPF32[sp + 16 >> 2] = y;
- HEAP32[sp + 8 >> 2] = x;
+ STACKTOP = STACKTOP + 160 | 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;
vars3$1(sp);
- b = +HEAPF32[sp + 32 >> 2];
a = HEAP32[sp + 24 >> 2] | 0;
- HEAP32[sp + 40 >> 2] = 0;
- HEAP32[sp + 44 >> 2] = 0;
+ HEAP32[sp + 32 >> 2] = 0;
+ HEAP32[sp + 36 >> 2] = 0;
HEAP32[sp + 24 >> 2] = a;
- HEAPF32[sp + 32 >> 2] = b;
+ HEAPF32[sp + 16 >> 2] = y;
+ HEAP32[sp + 8 >> 2] = x;
vars3$0(sp);
a = HEAP32[sp + 24 >> 2] | 0;
STACKTOP = sp;
@@ -477,29 +471,23 @@ function mix$1(sp) {
}
function vars$0(sp) {
sp = sp | 0;
- var b = +0, a = 0;
- a = HEAP32[sp + 24 >> 2] | 0;
- b = +HEAPF32[sp + 32 >> 2];
- c(4 + b);
- c(5 + a);
- c(6 + b);
- c(7 + a);
- c(8 + b);
+ var x = 0, y = +0;
+ y = +HEAPF32[sp + 16 >> 2];
+ x = HEAP32[sp + 8 >> 2] | 0;
+ c(5 + (x + y));
+ c(6 + y * x);
+ c(7 + (x + y));
+ c(8 + y * x);
}
function vars$1(sp) {
sp = sp | 0;
- var a = 0, x = 0, y = +0, b = +0;
- b = +HEAPF32[sp + 32 >> 2];
+ var x = 0, y = +0;
y = +HEAPF32[sp + 16 >> 2];
x = HEAP32[sp + 8 >> 2] | 0;
- a = HEAP32[sp + 24 >> 2] | 0;
- a = x + y;
- b = y * x;
- c(1 + a);
- c(2 + b);
- c(3 + a);
- HEAP32[sp + 24 >> 2] = a;
- HEAPF32[sp + 32 >> 2] = b;
+ c(1 + (x + y));
+ c(2 + y * x);
+ c(3 + (x + y));
+ c(4 + y * x);
}
function vars2$0(sp) {
sp = sp | 0;
@@ -515,27 +503,26 @@ function vars2$0(sp) {
}
function vars3$0(sp) {
sp = sp | 0;
- var a = 0, b = +0;
- b = +HEAPF32[sp + 32 >> 2];
+ var a = 0, y = +0, x = 0;
+ x = HEAP32[sp + 8 >> 2] | 0;
+ y = +HEAPF32[sp + 16 >> 2];
a = HEAP32[sp + 24 >> 2] | 0;
- a = c(4 + b);
+ a = c(4 + y * x);
a = c(5 + a);
- a = c(6 + b);
+ a = c(6 + y * x);
a = c(7 + a);
HEAP32[sp + 24 >> 2] = a;
}
function vars3$1(sp) {
sp = sp | 0;
- var b = +0, y = +0, x = 0, a = 0;
- a = HEAP32[sp + 24 >> 2] | 0;
- x = HEAP32[sp + 8 >> 2] | 0;
+ var a = 0, x = 0, y = +0;
y = +HEAPF32[sp + 16 >> 2];
- b = +HEAPF32[sp + 32 >> 2];
- b = y * x;
+ x = HEAP32[sp + 8 >> 2] | 0;
+ a = HEAP32[sp + 24 >> 2] | 0;
+ a = x + y;
a = c(1 + a);
- a = c(2 + b);
+ a = c(2 + y * x);
a = c(3 + a);
- HEAPF32[sp + 32 >> 2] = b;
HEAP32[sp + 24 >> 2] = a;
}
function vars4$0(sp) {
diff --git a/tools/test-js-optimizer-asm-outline2-output.js b/tools/test-js-optimizer-asm-outline2-output.js
index 44a4e8dd..abff54cb 100644
--- a/tools/test-js-optimizer-asm-outline2-output.js
+++ b/tools/test-js-optimizer-asm-outline2-output.js
@@ -21,49 +21,52 @@ function linear() {
}
function _free($mem) {
$mem = $mem | 0;
- var $3 = 0, $4 = 0, $5 = 0, $10 = 0, $11 = 0, $14 = 0, $15 = 0, $16 = 0, $21 = 0, $psize_0 = 0, $p_0 = 0, $189 = 0, $193 = 0, $194 = 0, sp = 0, helper$0 = 0;
+ var $5 = 0, $10 = 0, $16 = 0, $21 = 0, $25 = 0, $26 = 0, $psize_0 = 0, $p_0 = 0, $189 = 0, $194 = 0, sp = 0, helper$0 = 0;
sp = STACKTOP;
if (($mem | 0) == 0) {
STACKTOP = sp;
return;
}
- $3 = $mem - 8 | 0;
- $4 = $3;
$5 = HEAP32[24] | 0;
- if ($3 >>> 0 < $5 >>> 0) {
+ if (($mem - 8 | 0) >>> 0 < $5 >>> 0) {
_abort();
}
$10 = HEAP32[$mem - 4 >> 2] | 0;
- $11 = $10 & 3;
- if (($11 | 0) == 1) {
+ if (($10 & 3 | 0) == 1) {
_abort();
}
- $14 = $10 & -8;
- $15 = $mem + ($14 - 8) | 0;
- $16 = $15;
+ $16 = $mem + (($10 & -8) - 8) | 0;
L621 : do {
helper$0 = 1;
if (helper$0 ? ($10 & 1 | 0) == 0 : 0) {
helper$0 = 0;
- $21 = HEAP32[$3 >> 2] | 0;
- HEAP32[sp + 952 >> 2] = 0;
- HEAP32[sp + 956 >> 2] = 0;
- HEAP32[sp + 48 >> 2] = $11;
- HEAP32[sp + 80 >> 2] = $21;
+ $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 + 56 >> 2] = $14;
- HEAP32[sp + 32 >> 2] = $5;
- HEAP32[sp + 64 >> 2] = $15;
- HEAP32[sp + 360 >> 2] = $p_0;
- HEAP32[sp + 352 >> 2] = $psize_0;
+ 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 + 360 >> 2] | 0;
- $psize_0 = HEAP32[sp + 352 >> 2] | 0;
- tempValue = HEAP32[sp + 952 >> 2] | 0;
- tempInt = HEAP32[sp + 956 >> 2] | 0;
- tempDouble = +HEAPF32[sp + 956 >> 2];
- HEAP32[sp + 952 >> 2] = 0;
- HEAP32[sp + 956 >> 2] = 0;
+ $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;
}
@@ -81,36 +84,33 @@ function _free($mem) {
}
if (helper$0) {
helper$0 = 0;
- $p_0 = $4;
- $psize_0 = $14;
+ $p_0 = $mem - 8 | 0;
+ $psize_0 = $10 & -8;
}
} while (0);
$189 = $p_0;
- if ($189 >>> 0 >= $15 >>> 0) {
+ if ($189 >>> 0 >= ($mem + (($10 & -8) - 8) | 0) >>> 0) {
_abort();
}
- $193 = $mem + ($14 - 4) | 0;
- $194 = HEAP32[$193 >> 2] | 0;
+ $194 = HEAP32[($mem + (($10 & -8) - 4) | 0) >> 2] | 0;
if (($194 & 1 | 0) == 0) {
_abort();
}
- HEAP32[sp + 960 >> 2] = 0;
- HEAP32[sp + 964 >> 2] = 0;
- HEAP32[sp + 384 >> 2] = $194;
- HEAP32[sp + 72 >> 2] = $16;
- HEAP32[sp + 352 >> 2] = $psize_0;
- HEAP32[sp + 360 >> 2] = $p_0;
- HEAP32[sp + 368 >> 2] = $189;
+ HEAP32[sp + 680 >> 2] = 0;
+ HEAP32[sp + 684 >> 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 + 56 >> 2] = $14;
- HEAP32[sp + 64 >> 2] = $15;
- HEAP32[sp + 376 >> 2] = $193;
+ HEAP32[sp + 24 >> 2] = $10;
_free$2(sp);
- tempValue = HEAP32[sp + 960 >> 2] | 0;
- tempInt = HEAP32[sp + 964 >> 2] | 0;
- tempDouble = +HEAPF32[sp + 964 >> 2];
- HEAP32[sp + 960 >> 2] = 0;
- HEAP32[sp + 964 >> 2] = 0;
+ 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;
if ((tempValue | 0) == 5) {
return;
}
@@ -149,54 +149,34 @@ function linear$1(sp) {
}
function _free$0(sp) {
sp = sp | 0;
- var $16 = 0, $204 = 0, $psize_0 = 0, $p_0 = 0, $220 = 0, $189 = 0, $227 = 0, $194 = 0, $228 = 0, helper$2 = 0, $233 = 0, $mem = 0, $14 = 0, $236 = 0, $239 = 0, $_pre_phi305 = 0, $262 = 0, $267 = 0, $15 = 0, $270 = 0, $273 = 0, $293 = 0, $294 = 0, $298 = 0, $299 = 0, $R7_1 = 0, $R7_0 = 0, $RP9_0 = 0, $301 = 0, $302 = 0, $305 = 0, $306 = 0, $278 = 0, $283 = 0, $287 = 0, $318 = 0, $320 = 0, $334 = 0, $351 = 0, $364 = 0, $psize_1 = 0;
- $psize_1 = HEAP32[sp + 640 >> 2] | 0;
- $15 = HEAP32[sp + 64 >> 2] | 0;
- $14 = HEAP32[sp + 56 >> 2] | 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;
+ $psize_1 = HEAP32[sp + 424 >> 2] | 0;
+ $10 = HEAP32[sp + 24 >> 2] | 0;
$mem = HEAP32[sp + 8 >> 2] | 0;
- $194 = HEAP32[sp + 384 >> 2] | 0;
- $189 = HEAP32[sp + 368 >> 2] | 0;
- $p_0 = HEAP32[sp + 360 >> 2] | 0;
- $psize_0 = HEAP32[sp + 352 >> 2] | 0;
- $16 = HEAP32[sp + 72 >> 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[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 + 944 >> 2] = 5;
- break OL;
- }
- _sys_trim(0) | 0;
- HEAP32[sp + 944 >> 2] = 5;
- break OL;
- }
if (($16 | 0) == (HEAP32[25] | 0)) {
$220 = (HEAP32[22] | 0) + $psize_0 | 0;
HEAP32[22] = $220;
HEAP32[25] = $p_0;
HEAP32[$p_0 + 4 >> 2] = $220 | 1;
HEAP32[$189 + $220 >> 2] = $220;
- HEAP32[sp + 944 >> 2] = 5;
+ HEAP32[sp + 664 >> 2] = 5;
break OL;
}
$227 = ($194 & -8) + $psize_0 | 0;
- $228 = $194 >>> 3;
L726 : do {
helper$2 = 1;
if (helper$2 ? $194 >>> 0 < 256 : 0) {
helper$2 = 0;
- $233 = HEAP32[$mem + $14 >> 2] | 0;
- $236 = HEAP32[$mem + ($14 | 4) >> 2] | 0;
- $239 = 120 + ($228 << 1 << 2) | 0;
+ $233 = HEAP32[$mem + ($10 & -8) >> 2] | 0;
+ $236 = HEAP32[$mem + ($10 & -8 | 4) >> 2] | 0;
do {
- if (($233 | 0) != ($239 | 0)) {
+ if (($233 | 0) != (120 + ($194 >>> 3 << 1 << 2) | 0 | 0)) {
if ($233 >>> 0 < (HEAP32[24] | 0) >>> 0) {
_abort();
}
@@ -207,19 +187,18 @@ function _free$0(sp) {
}
} while (0);
if (($236 | 0) == ($233 | 0)) {
- HEAP32[20] = HEAP32[20] & (1 << $228 ^ -1);
+ HEAP32[20] = HEAP32[20] & (1 << ($194 >>> 3) ^ -1);
break;
}
do {
- if (($236 | 0) == ($239 | 0)) {
+ if (($236 | 0) == (120 + ($194 >>> 3 << 1 << 2) | 0 | 0)) {
$_pre_phi305 = $236 + 8 | 0;
} else {
if ($236 >>> 0 < (HEAP32[24] | 0) >>> 0) {
_abort();
}
- $262 = $236 + 8 | 0;
- if ((HEAP32[$262 >> 2] | 0) == ($16 | 0)) {
- $_pre_phi305 = $262;
+ if ((HEAP32[($236 + 8 | 0) >> 2] | 0) == ($16 | 0)) {
+ $_pre_phi305 = $236 + 8 | 0;
break;
}
_abort();
@@ -230,26 +209,24 @@ function _free$0(sp) {
}
if (helper$2) {
helper$2 = 0;
- $267 = $15;
- $270 = HEAP32[$mem + ($14 + 16) >> 2] | 0;
- $273 = HEAP32[$mem + ($14 | 4) >> 2] | 0;
+ $267 = $mem + (($10 & -8) - 8) | 0;
+ $270 = HEAP32[$mem + (($10 & -8) + 16) >> 2] | 0;
+ $273 = HEAP32[$mem + ($10 & -8 | 4) >> 2] | 0;
do {
if (($273 | 0) == ($267 | 0)) {
- $293 = $mem + ($14 + 12) | 0;
- $294 = HEAP32[$293 >> 2] | 0;
+ $294 = HEAP32[($mem + (($10 & -8) + 12) | 0) >> 2] | 0;
if (($294 | 0) == 0) {
- $298 = $mem + ($14 + 8) | 0;
- $299 = HEAP32[$298 >> 2] | 0;
+ $299 = HEAP32[($mem + (($10 & -8) + 8) | 0) >> 2] | 0;
if (($299 | 0) == 0) {
$R7_1 = 0;
break;
} else {
$R7_0 = $299;
- $RP9_0 = $298;
+ $RP9_0 = $mem + (($10 & -8) + 8) | 0;
}
} else {
$R7_0 = $294;
- $RP9_0 = $293;
+ $RP9_0 = $mem + (($10 & -8) + 12) | 0;
}
while (1) {
$301 = $R7_0 + 20 | 0;
@@ -276,18 +253,16 @@ function _free$0(sp) {
break;
}
} else {
- $278 = HEAP32[$mem + $14 >> 2] | 0;
+ $278 = HEAP32[$mem + ($10 & -8) >> 2] | 0;
if ($278 >>> 0 < (HEAP32[24] | 0) >>> 0) {
_abort();
}
- $283 = $278 + 12 | 0;
- if ((HEAP32[$283 >> 2] | 0) != ($267 | 0)) {
+ if ((HEAP32[($278 + 12 | 0) >> 2] | 0) != ($267 | 0)) {
_abort();
}
- $287 = $273 + 8 | 0;
- if ((HEAP32[$287 >> 2] | 0) == ($267 | 0)) {
- HEAP32[$283 >> 2] = $273;
- HEAP32[$287 >> 2] = $278;
+ if ((HEAP32[($273 + 8 | 0) >> 2] | 0) == ($267 | 0)) {
+ HEAP32[($278 + 12 | 0) >> 2] = $273;
+ HEAP32[($273 + 8 | 0) >> 2] = $278;
$R7_1 = $273;
break;
} else {
@@ -298,23 +273,21 @@ function _free$0(sp) {
if (($270 | 0) == 0) {
break;
}
- $318 = $mem + ($14 + 20) | 0;
- $320 = 384 + (HEAP32[$318 >> 2] << 2) | 0;
+ $320 = 384 + (HEAP32[($mem + (($10 & -8) + 20) | 0) >> 2] << 2) | 0;
do {
if (($267 | 0) == (HEAP32[$320 >> 2] | 0)) {
HEAP32[$320 >> 2] = $R7_1;
if (($R7_1 | 0) != 0) {
break;
}
- HEAP32[21] = HEAP32[21] & (1 << HEAP32[$318 >> 2] ^ -1);
+ HEAP32[21] = HEAP32[21] & (1 << HEAP32[($mem + (($10 & -8) + 20) | 0) >> 2] ^ -1);
break L726;
} else {
if ($270 >>> 0 < (HEAP32[24] | 0) >>> 0) {
_abort();
}
- $334 = $270 + 16 | 0;
- if ((HEAP32[$334 >> 2] | 0) == ($267 | 0)) {
- HEAP32[$334 >> 2] = $R7_1;
+ if ((HEAP32[($270 + 16 | 0) >> 2] | 0) == ($267 | 0)) {
+ HEAP32[($270 + 16 | 0) >> 2] = $R7_1;
} else {
HEAP32[$270 + 20 >> 2] = $R7_1;
}
@@ -327,7 +300,7 @@ function _free$0(sp) {
_abort();
}
HEAP32[$R7_1 + 24 >> 2] = $270;
- $351 = HEAP32[$mem + ($14 + 8) >> 2] | 0;
+ $351 = HEAP32[$mem + (($10 & -8) + 8) >> 2] | 0;
do {
if (($351 | 0) != 0) {
if ($351 >>> 0 < (HEAP32[24] | 0) >>> 0) {
@@ -339,7 +312,7 @@ function _free$0(sp) {
}
}
} while (0);
- $364 = HEAP32[$mem + ($14 + 12) >> 2] | 0;
+ $364 = HEAP32[$mem + (($10 & -8) + 12) >> 2] | 0;
if (($364 | 0) == 0) {
break;
}
@@ -356,60 +329,46 @@ function _free$0(sp) {
HEAP32[$189 + $227 >> 2] = $227;
if (($p_0 | 0) != (HEAP32[25] | 0)) {
$psize_1 = $227;
- HEAP32[sp + 944 >> 2] = 1;
+ HEAP32[sp + 664 >> 2] = 1;
break OL;
}
HEAP32[22] = $227;
- HEAP32[sp + 944 >> 2] = 5;
+ HEAP32[sp + 664 >> 2] = 5;
break OL;
} while (0);
- HEAP32[sp + 640 >> 2] = $psize_1;
+ HEAP32[sp + 424 >> 2] = $psize_1;
}
function _free$1(sp) {
sp = sp | 0;
- var $11 = 0, $_sum233 = 0, $21 = 0, $24 = 0, $mem = 0, $25 = 0, $26 = 0, $14 = 0, $5 = 0, $177 = 0, $15 = 0, $32 = 0, $37 = 0, $40 = 0, $43 = 0, $_pre_phi307 = 0, $64 = 0, $69 = 0, $72 = 0, $75 = 0, $94 = 0, $95 = 0, $99 = 0, $100 = 0, $R_1 = 0, $R_0 = 0, $RP_0 = 0, $102 = 0, $103 = 0, $106 = 0, $107 = 0, $80 = 0, $84 = 0, $88 = 0, $118 = 0, $120 = 0, $134 = 0, $151 = 0, $164 = 0, $p_0 = 0, $psize_0 = 0;
- $psize_0 = HEAP32[sp + 352 >> 2] | 0;
- $p_0 = HEAP32[sp + 360 >> 2] | 0;
- $15 = HEAP32[sp + 64 >> 2] | 0;
- $5 = HEAP32[sp + 32 >> 2] | 0;
- $14 = HEAP32[sp + 56 >> 2] | 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 + 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;
- $21 = HEAP32[sp + 80 >> 2] | 0;
- $11 = HEAP32[sp + 48 >> 2] | 0;
+ $25 = HEAP32[sp + 48 >> 2] | 0;
OL : do {
- if (($11 | 0) == 0) {
- HEAP32[sp + 952 >> 2] = 5;
- break OL;
- }
- $_sum233 = -8 - $21 | 0;
- $24 = $mem + $_sum233 | 0;
- $25 = $24;
- $26 = $21 + $14 | 0;
- if ($24 >>> 0 < $5 >>> 0) {
- _abort();
- }
if (($25 | 0) == (HEAP32[25] | 0)) {
- $177 = $mem + ($14 - 4) | 0;
- if ((HEAP32[$177 >> 2] & 3 | 0) != 3) {
+ if ((HEAP32[($mem + (($10 & -8) - 4) | 0) >> 2] & 3 | 0) != 3) {
$p_0 = $25;
$psize_0 = $26;
- HEAP32[sp + 952 >> 2] = 1;
+ HEAP32[sp + 672 >> 2] = 1;
break OL;
}
HEAP32[22] = $26;
- HEAP32[$177 >> 2] = HEAP32[$177 >> 2] & -2;
- HEAP32[$mem + ($_sum233 + 4) >> 2] = $26 | 1;
- HEAP32[$15 >> 2] = $26;
- HEAP32[sp + 952 >> 2] = 5;
+ 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;
break OL;
}
- $32 = $21 >>> 3;
if ($21 >>> 0 < 256) {
- $37 = HEAP32[$mem + ($_sum233 + 8) >> 2] | 0;
- $40 = HEAP32[$mem + ($_sum233 + 12) >> 2] | 0;
- $43 = 120 + ($32 << 1 << 2) | 0;
+ $37 = HEAP32[$mem + ((-8 - $21 | 0) + 8) >> 2] | 0;
+ $40 = HEAP32[$mem + ((-8 - $21 | 0) + 12) >> 2] | 0;
do {
- if (($37 | 0) != ($43 | 0)) {
+ if (($37 | 0) != (120 + ($21 >>> 3 << 1 << 2) | 0 | 0)) {
if ($37 >>> 0 < $5 >>> 0) {
_abort();
}
@@ -420,22 +379,21 @@ function _free$1(sp) {
}
} while (0);
if (($40 | 0) == ($37 | 0)) {
- HEAP32[20] = HEAP32[20] & (1 << $32 ^ -1);
+ HEAP32[20] = HEAP32[20] & (1 << ($21 >>> 3) ^ -1);
$p_0 = $25;
$psize_0 = $26;
- HEAP32[sp + 952 >> 2] = 1;
+ HEAP32[sp + 672 >> 2] = 1;
break OL;
}
do {
- if (($40 | 0) == ($43 | 0)) {
+ if (($40 | 0) == (120 + ($21 >>> 3 << 1 << 2) | 0 | 0)) {
$_pre_phi307 = $40 + 8 | 0;
} else {
if ($40 >>> 0 < $5 >>> 0) {
_abort();
}
- $64 = $40 + 8 | 0;
- if ((HEAP32[$64 >> 2] | 0) == ($25 | 0)) {
- $_pre_phi307 = $64;
+ if ((HEAP32[($40 + 8 | 0) >> 2] | 0) == ($25 | 0)) {
+ $_pre_phi307 = $40 + 8 | 0;
break;
}
_abort();
@@ -445,29 +403,27 @@ function _free$1(sp) {
HEAP32[$_pre_phi307 >> 2] = $37;
$p_0 = $25;
$psize_0 = $26;
- HEAP32[sp + 952 >> 2] = 1;
+ HEAP32[sp + 672 >> 2] = 1;
break OL;
}
- $69 = $24;
- $72 = HEAP32[$mem + ($_sum233 + 24) >> 2] | 0;
- $75 = HEAP32[$mem + ($_sum233 + 12) >> 2] | 0;
+ $69 = $mem + (-8 - $21 | 0) | 0;
+ $72 = HEAP32[$mem + ((-8 - $21 | 0) + 24) >> 2] | 0;
+ $75 = HEAP32[$mem + ((-8 - $21 | 0) + 12) >> 2] | 0;
do {
if (($75 | 0) == ($69 | 0)) {
- $94 = $mem + ($_sum233 + 20) | 0;
- $95 = HEAP32[$94 >> 2] | 0;
+ $95 = HEAP32[($mem + ((-8 - $21 | 0) + 20) | 0) >> 2] | 0;
if (($95 | 0) == 0) {
- $99 = $mem + ($_sum233 + 16) | 0;
- $100 = HEAP32[$99 >> 2] | 0;
+ $100 = HEAP32[($mem + ((-8 - $21 | 0) + 16) | 0) >> 2] | 0;
if (($100 | 0) == 0) {
$R_1 = 0;
break;
} else {
$R_0 = $100;
- $RP_0 = $99;
+ $RP_0 = $mem + ((-8 - $21 | 0) + 16) | 0;
}
} else {
$R_0 = $95;
- $RP_0 = $94;
+ $RP_0 = $mem + ((-8 - $21 | 0) + 20) | 0;
}
while (1) {
$102 = $R_0 + 20 | 0;
@@ -494,18 +450,16 @@ function _free$1(sp) {
break;
}
} else {
- $80 = HEAP32[$mem + ($_sum233 + 8) >> 2] | 0;
+ $80 = HEAP32[$mem + ((-8 - $21 | 0) + 8) >> 2] | 0;
if ($80 >>> 0 < $5 >>> 0) {
_abort();
}
- $84 = $80 + 12 | 0;
- if ((HEAP32[$84 >> 2] | 0) != ($69 | 0)) {
+ if ((HEAP32[($80 + 12 | 0) >> 2] | 0) != ($69 | 0)) {
_abort();
}
- $88 = $75 + 8 | 0;
- if ((HEAP32[$88 >> 2] | 0) == ($69 | 0)) {
- HEAP32[$84 >> 2] = $75;
- HEAP32[$88 >> 2] = $80;
+ if ((HEAP32[($75 + 8 | 0) >> 2] | 0) == ($69 | 0)) {
+ HEAP32[($80 + 12 | 0) >> 2] = $75;
+ HEAP32[($75 + 8 | 0) >> 2] = $80;
$R_1 = $75;
break;
} else {
@@ -516,38 +470,36 @@ function _free$1(sp) {
if (($72 | 0) == 0) {
$p_0 = $25;
$psize_0 = $26;
- HEAP32[sp + 952 >> 2] = 1;
+ HEAP32[sp + 672 >> 2] = 1;
break OL;
}
- $118 = $mem + ($_sum233 + 28) | 0;
- $120 = 384 + (HEAP32[$118 >> 2] << 2) | 0;
+ $120 = 384 + (HEAP32[($mem + ((-8 - $21 | 0) + 28) | 0) >> 2] << 2) | 0;
do {
if (($69 | 0) == (HEAP32[$120 >> 2] | 0)) {
HEAP32[$120 >> 2] = $R_1;
if (($R_1 | 0) != 0) {
break;
}
- HEAP32[21] = HEAP32[21] & (1 << HEAP32[$118 >> 2] ^ -1);
+ HEAP32[21] = HEAP32[21] & (1 << HEAP32[($mem + ((-8 - $21 | 0) + 28) | 0) >> 2] ^ -1);
$p_0 = $25;
$psize_0 = $26;
- HEAP32[sp + 952 >> 2] = 2;
- HEAP32[sp + 956 >> 2] = 2;
+ HEAP32[sp + 672 >> 2] = 2;
+ HEAP32[sp + 676 >> 2] = 2;
break OL;
} else {
if ($72 >>> 0 < (HEAP32[24] | 0) >>> 0) {
_abort();
}
- $134 = $72 + 16 | 0;
- if ((HEAP32[$134 >> 2] | 0) == ($69 | 0)) {
- HEAP32[$134 >> 2] = $R_1;
+ if ((HEAP32[($72 + 16 | 0) >> 2] | 0) == ($69 | 0)) {
+ HEAP32[($72 + 16 | 0) >> 2] = $R_1;
} else {
HEAP32[$72 + 20 >> 2] = $R_1;
}
if (($R_1 | 0) == 0) {
$p_0 = $25;
$psize_0 = $26;
- HEAP32[sp + 952 >> 2] = 2;
- HEAP32[sp + 956 >> 2] = 2;
+ HEAP32[sp + 672 >> 2] = 2;
+ HEAP32[sp + 676 >> 2] = 2;
break OL;
}
}
@@ -556,7 +508,7 @@ function _free$1(sp) {
_abort();
}
HEAP32[$R_1 + 24 >> 2] = $72;
- $151 = HEAP32[$mem + ($_sum233 + 16) >> 2] | 0;
+ $151 = HEAP32[$mem + ((-8 - $21 | 0) + 16) >> 2] | 0;
do {
if (($151 | 0) != 0) {
if ($151 >>> 0 < (HEAP32[24] | 0) >>> 0) {
@@ -568,11 +520,11 @@ function _free$1(sp) {
}
}
} while (0);
- $164 = HEAP32[$mem + ($_sum233 + 20) >> 2] | 0;
+ $164 = HEAP32[$mem + ((-8 - $21 | 0) + 20) >> 2] | 0;
if (($164 | 0) == 0) {
$p_0 = $25;
$psize_0 = $26;
- HEAP32[sp + 952 >> 2] = 1;
+ HEAP32[sp + 672 >> 2] = 1;
break OL;
}
if ($164 >>> 0 < (HEAP32[24] | 0) >>> 0) {
@@ -582,50 +534,64 @@ function _free$1(sp) {
HEAP32[$164 + 24 >> 2] = $R_1;
$p_0 = $25;
$psize_0 = $26;
- HEAP32[sp + 952 >> 2] = 1;
+ HEAP32[sp + 672 >> 2] = 1;
break OL;
}
} while (0);
- HEAP32[sp + 360 >> 2] = $p_0;
- HEAP32[sp + 352 >> 2] = $psize_0;
+ HEAP32[sp + 224 >> 2] = $p_0;
+ HEAP32[sp + 216 >> 2] = $psize_0;
}
function _free$2(sp) {
sp = sp | 0;
- var helper$1 = 0, $194 = 0, $16 = 0, $psize_0 = 0, $p_0 = 0, $189 = 0, $mem = 0, $14 = 0, $15 = 0, $psize_1 = 0, $193 = 0, $390 = 0, $393 = 0, $395 = 0, $396 = 0, $397 = 0, $F16_0 = 0, $_pre_phi = 0, $403 = 0, $404 = 0, $414 = 0, $415 = 0, $I18_0 = 0, $422 = 0, $423 = 0, $426 = 0, $428 = 0, $431 = 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;
- $193 = HEAP32[sp + 376 >> 2] | 0;
- $15 = HEAP32[sp + 64 >> 2] | 0;
- $14 = HEAP32[sp + 56 >> 2] | 0;
+ var helper$1 = 0, $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 + 24 >> 2] | 0;
$mem = HEAP32[sp + 8 >> 2] | 0;
- $189 = HEAP32[sp + 368 >> 2] | 0;
- $p_0 = HEAP32[sp + 360 >> 2] | 0;
- $psize_0 = HEAP32[sp + 352 >> 2] | 0;
- $16 = HEAP32[sp + 72 >> 2] | 0;
- $194 = HEAP32[sp + 384 >> 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 {
helper$1 = 1;
if (helper$1 ? ($194 & 2 | 0) == 0 : 0) {
helper$1 = 0;
- HEAP32[sp + 944 >> 2] = 0;
- HEAP32[sp + 948 >> 2] = 0;
- HEAP32[sp + 72 >> 2] = $16;
- HEAP32[sp + 352 >> 2] = $psize_0;
- HEAP32[sp + 360 >> 2] = $p_0;
- HEAP32[sp + 368 >> 2] = $189;
- HEAP32[sp + 384 >> 2] = $194;
+ 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 + 680 >> 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 + 56 >> 2] = $14;
- HEAP32[sp + 64 >> 2] = $15;
- HEAP32[sp + 640 >> 2] = $psize_1;
+ HEAP32[sp + 24 >> 2] = $10;
+ HEAP32[sp + 424 >> 2] = $psize_1;
_free$0(sp);
- $psize_1 = HEAP32[sp + 640 >> 2] | 0;
- tempValue = HEAP32[sp + 944 >> 2] | 0;
- tempInt = HEAP32[sp + 948 >> 2] | 0;
- tempDouble = +HEAPF32[sp + 948 >> 2];
- HEAP32[sp + 944 >> 2] = 0;
- HEAP32[sp + 948 >> 2] = 0;
+ $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 + 960 >> 2] = 5;
+ HEAP32[sp + 680 >> 2] = 5;
break OL;
}
if ((tempValue | 0) == 1) {
@@ -634,7 +600,7 @@ function _free$2(sp) {
}
if (helper$1) {
helper$1 = 0;
- HEAP32[$193 >> 2] = $194 & -2;
+ 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;
@@ -642,21 +608,17 @@ function _free$2(sp) {
} while (0);
$390 = $psize_1 >>> 3;
if ($psize_1 >>> 0 < 256) {
- $393 = $390 << 1;
- $395 = 120 + ($393 << 2) | 0;
$396 = HEAP32[20] | 0;
- $397 = 1 << $390;
do {
- if (($396 & $397 | 0) == 0) {
- HEAP32[20] = $396 | $397;
- $F16_0 = $395;
- $_pre_phi = 120 + ($393 + 2 << 2) | 0;
+ if (($396 & 1 << $390 | 0) == 0) {
+ HEAP32[20] = $396 | 1 << $390;
+ $F16_0 = 120 + ($390 << 1 << 2) | 0;
+ $_pre_phi = 120 + (($390 << 1) + 2 << 2) | 0;
} else {
- $403 = 120 + ($393 + 2 << 2) | 0;
- $404 = HEAP32[$403 >> 2] | 0;
+ $404 = HEAP32[(120 + (($390 << 1) + 2 << 2) | 0) >> 2] | 0;
if ($404 >>> 0 >= (HEAP32[24] | 0) >>> 0) {
$F16_0 = $404;
- $_pre_phi = $403;
+ $_pre_phi = 120 + (($390 << 1) + 2 << 2) | 0;
break;
}
_abort();
@@ -665,8 +627,8 @@ function _free$2(sp) {
HEAP32[$_pre_phi >> 2] = $p_0;
HEAP32[$F16_0 + 12 >> 2] = $p_0;
HEAP32[$p_0 + 8 >> 2] = $F16_0;
- HEAP32[$p_0 + 12 >> 2] = $395;
- HEAP32[sp + 960 >> 2] = 5;
+ HEAP32[$p_0 + 12 >> 2] = 120 + ($390 << 1 << 2) | 0;
+ HEAP32[sp + 680 >> 2] = 5;
break OL;
}
$414 = $p_0;
@@ -679,12 +641,8 @@ function _free$2(sp) {
$I18_0 = 31;
break;
}
- $422 = ($415 + 1048320 | 0) >>> 16 & 8;
- $423 = $415 << $422;
- $426 = ($423 + 520192 | 0) >>> 16 & 4;
- $428 = $423 << $426;
- $431 = ($428 + 245760 | 0) >>> 16 & 2;
- $436 = 14 - ($426 | $422 | $431) + ($428 << $431 >>> 15) | 0;
+ $428 = $415 << (($415 + 1048320 | 0) >>> 16 & 8) << ((($415 << (($415 + 1048320 | 0) >>> 16 & 8)) + 520192 | 0) >>> 16 & 4);
+ $436 = 14 - ((($415 << (($415 + 1048320 | 0) >>> 16 & 8)) + 520192 | 0) >>> 16 & 4 | ($415 + 1048320 | 0) >>> 16 & 8 | ($428 + 245760 | 0) >>> 16 & 2) + ($428 << (($428 + 245760 | 0) >>> 16 & 2) >>> 15) | 0;
$I18_0 = $psize_1 >>> (($436 + 7 | 0) >>> 0) & 1 | $436 << 1;
}
} while (0);
@@ -757,7 +715,7 @@ function _free$2(sp) {
if (($501 | 0) == 0) {
$sp_0_in_i = 536;
} else {
- HEAP32[sp + 960 >> 2] = 5;
+ HEAP32[sp + 680 >> 2] = 5;
break OL;
}
while (1) {
@@ -770,7 +728,7 @@ function _free$2(sp) {
}
HEAP32[28] = -1;
STACKTOP = sp;
- HEAP32[sp + 960 >> 2] = 5;
+ HEAP32[sp + 680 >> 2] = 5;
break OL;
} while (0);
}
diff --git a/tools/test-js-optimizer-asm-outline3-output.js b/tools/test-js-optimizer-asm-outline3-output.js
new file mode 100644
index 00000000..5cc0f48d
--- /dev/null
+++ b/tools/test-js-optimizer-asm-outline3-output.js
@@ -0,0 +1,28 @@
+function _memset(ptr, value, num) {
+ ptr = ptr | 0;
+ value = value | 0;
+ num = num | 0;
+ var stop = 0, value4 = 0, unaligned = 0;
+ stop = ptr + num | 0;
+ if ((num | 0) >= 20) {
+ value = value & 255;
+ unaligned = ptr & 3;
+ value4 = value | value << 8 | value << 16 | value << 24;
+ if (unaligned) {
+ unaligned = ptr + 4 - unaligned | 0;
+ while ((ptr | 0) < (unaligned | 0)) {
+ HEAP8[ptr] = value;
+ ptr = ptr + 1 | 0;
+ }
+ }
+ while ((ptr | 0) < (stop & ~3 | 0)) {
+ HEAP32[ptr >> 2] = value4;
+ ptr = ptr + 4 | 0;
+ }
+ }
+ while ((ptr | 0) < (stop | 0)) {
+ HEAP8[ptr] = value;
+ ptr = ptr + 1 | 0;
+ }
+}
+
diff --git a/tools/test-js-optimizer-asm-outline3.js b/tools/test-js-optimizer-asm-outline3.js
new file mode 100644
index 00000000..119447d8
--- /dev/null
+++ b/tools/test-js-optimizer-asm-outline3.js
@@ -0,0 +1,30 @@
+function _memset(ptr, value, num) {
+ ptr = ptr | 0;
+ value = value | 0;
+ num = num | 0;
+ var stop = 0, value4 = 0, stop4 = 0, unaligned = 0;
+ stop = ptr + num | 0;
+ if ((num | 0) >= 20) {
+ value = value & 255;
+ unaligned = ptr & 3;
+ value4 = value | value << 8 | value << 16 | value << 24;
+ stop4 = stop & ~3;
+ if (unaligned) {
+ unaligned = ptr + 4 - unaligned | 0;
+ while ((ptr | 0) < (unaligned | 0)) {
+ HEAP8[ptr] = value;
+ ptr = ptr + 1 | 0;
+ }
+ }
+ while ((ptr | 0) < (stop4 | 0)) {
+ HEAP32[ptr >> 2] = value4;
+ ptr = ptr + 4 | 0;
+ }
+ }
+ while ((ptr | 0) < (stop | 0)) {
+ HEAP8[ptr] = value;
+ ptr = ptr + 1 | 0;
+ }
+}
+// EMSCRIPTEN_GENERATED_FUNCTIONS
+// EXTRA_INFO: { "sizeToOutline": 100 }