mirror of
https://github.com/fluencelabs/assemblyscript
synced 2025-06-12 14:31:28 +00:00
Improve inlining where locals can be aliased; Add a crude mechanism for explicit unchecked array accesses
The `unchecked` builtin should be handled with ultimate care and it would be a lot better if there'd be a mechanism doing this automatically.
This commit is contained in:
@ -90,7 +90,7 @@ class NBodySystem {
|
||||
var pz = 0.0;
|
||||
var size = bodies.length;
|
||||
for (let i = 0; i < size; i++) {
|
||||
let b = bodies[i];
|
||||
let b = unchecked(bodies[i]);
|
||||
let m = b.mass;
|
||||
px += b.vx * m;
|
||||
py += b.vy * m;
|
||||
@ -105,7 +105,7 @@ class NBodySystem {
|
||||
// var buffer = changetype<usize>(bodies.buffer_);
|
||||
|
||||
for (let i: u32 = 0; i < size; ++i) {
|
||||
let bodyi = bodies[i];
|
||||
let bodyi = unchecked(bodies[i]);
|
||||
// let bodyi = load<Body>(buffer + i * sizeof<Body>(), 8);
|
||||
|
||||
let ix = bodyi.x;
|
||||
@ -118,7 +118,7 @@ class NBodySystem {
|
||||
|
||||
let bodyim = bodyi.mass;
|
||||
for (let j: u32 = i + 1; j < size; ++j) {
|
||||
let bodyj = bodies[j];
|
||||
let bodyj = unchecked(bodies[j]);
|
||||
// let bodyj = load<Body>(buffer + j * sizeof<Body>(), 8);
|
||||
|
||||
let dx = ix - bodyj.x;
|
||||
@ -156,7 +156,7 @@ class NBodySystem {
|
||||
var bodies = this.bodies;
|
||||
|
||||
for (let i: u32 = 0, size: u32 = bodies.length; i < size; ++i) {
|
||||
let bodyi = bodies[i];
|
||||
let bodyi = unchecked(bodies[i]);
|
||||
|
||||
let ix = bodyi.x;
|
||||
let iy = bodyi.y;
|
||||
|
@ -63,35 +63,6 @@ function asmFunc(global, env, buffer) {
|
||||
return $9 | 0;
|
||||
}
|
||||
|
||||
function $lib_internal_arraybuffer_allocUnsafe($0) {
|
||||
$0 = $0 | 0;
|
||||
var $1 = 0;
|
||||
$1 = $0;
|
||||
$1 = $lib_allocator_arena_allocate_memory(1 << (32 - Math_clz32($1 + 7 | 0) | 0) | 0 | 0) | 0;
|
||||
HEAP32[$1 >> 2] = $0;
|
||||
return $1 | 0;
|
||||
}
|
||||
|
||||
function $lib_array_Array_Body__constructor($0, $1) {
|
||||
$0 = $0 | 0;
|
||||
$1 = $1 | 0;
|
||||
var $2 = 0, $3 = 0;
|
||||
if ($1 >>> 0 > 268435454 >>> 0) {
|
||||
abort(0 | 0, 4 | 0, 23 | 0, 39 | 0);
|
||||
abort();
|
||||
}
|
||||
if ($0) $3 = $0; else {
|
||||
$2 = $lib_allocator_arena_allocate_memory(8 | 0) | 0;
|
||||
HEAP32[$2 >> 2] = 0;
|
||||
HEAP32[($2 + 4 | 0) >> 2] = 0;
|
||||
$0 = $2;
|
||||
$3 = $0;
|
||||
}
|
||||
HEAP32[$3 >> 2] = $lib_internal_arraybuffer_allocUnsafe($1 << 2 | 0 | 0) | 0;
|
||||
HEAP32[($0 + 4 | 0) >> 2] = $1;
|
||||
return $0 | 0;
|
||||
}
|
||||
|
||||
function $lib_memory_set_memory($0, $1, $2) {
|
||||
$0 = $0 | 0;
|
||||
$1 = $1 | 0;
|
||||
@ -176,552 +147,84 @@ function asmFunc(global, env, buffer) {
|
||||
} while (1);
|
||||
}
|
||||
|
||||
function $lib_memory_copy_memory($0, $1, $2) {
|
||||
function $lib_array_Array_Body__constructor($0, $1) {
|
||||
$0 = $0 | 0;
|
||||
$1 = $1 | 0;
|
||||
$2 = $2 | 0;
|
||||
var $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $24 = 0, $25 = 0, $26 = 0, $27 = 0, $28 = 0, $29 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0, $37 = 0, $38 = 0, $39 = 0, $40 = 0, $41 = 0, $42 = 0, $43 = 0, $44 = 0;
|
||||
continue_0 : do {
|
||||
if ($2) $5 = $1 & 3 | 0; else $5 = $2;
|
||||
if ($5) {
|
||||
$3 = $0;
|
||||
$0 = $3 + 1 | 0;
|
||||
$6 = $3;
|
||||
$3 = $1;
|
||||
$1 = $3 + 1 | 0;
|
||||
HEAP8[$6 >> 0] = HEAPU8[$3 >> 0] | 0;
|
||||
$2 = $2 - 1 | 0;
|
||||
continue continue_0;
|
||||
}
|
||||
break continue_0;
|
||||
} while (1);
|
||||
if (($0 & 3 | 0 | 0) == (0 | 0)) {
|
||||
continue_1 : do {
|
||||
if ($2 >>> 0 >= 16 >>> 0) {
|
||||
HEAP32[$0 >> 2] = HEAPU32[$1 >> 2] | 0;
|
||||
HEAP32[($0 + 4 | 0) >> 2] = HEAPU32[($1 + 4 | 0) >> 2] | 0;
|
||||
HEAP32[($0 + 8 | 0) >> 2] = HEAPU32[($1 + 8 | 0) >> 2] | 0;
|
||||
HEAP32[($0 + 12 | 0) >> 2] = HEAPU32[($1 + 12 | 0) >> 2] | 0;
|
||||
$1 = $1 + 16 | 0;
|
||||
$0 = $0 + 16 | 0;
|
||||
$2 = $2 - 16 | 0;
|
||||
continue continue_1;
|
||||
}
|
||||
break continue_1;
|
||||
} while (1);
|
||||
if ($2 & 8 | 0) {
|
||||
HEAP32[$0 >> 2] = HEAPU32[$1 >> 2] | 0;
|
||||
HEAP32[($0 + 4 | 0) >> 2] = HEAPU32[($1 + 4 | 0) >> 2] | 0;
|
||||
$0 = $0 + 8 | 0;
|
||||
$1 = $1 + 8 | 0;
|
||||
}
|
||||
if ($2 & 4 | 0) {
|
||||
HEAP32[$0 >> 2] = HEAPU32[$1 >> 2] | 0;
|
||||
$0 = $0 + 4 | 0;
|
||||
$1 = $1 + 4 | 0;
|
||||
}
|
||||
if ($2 & 2 | 0) {
|
||||
HEAP16[$0 >> 1] = HEAPU16[$1 >> 1] | 0;
|
||||
$0 = $0 + 2 | 0;
|
||||
$1 = $1 + 2 | 0;
|
||||
}
|
||||
if ($2 & 1 | 0) {
|
||||
$3 = $0;
|
||||
$7 = $3;
|
||||
$3 = $1;
|
||||
HEAP8[$7 >> 0] = HEAPU8[$3 >> 0] | 0;
|
||||
}
|
||||
return;
|
||||
var $2 = 0, $3 = 0, $4 = 0, $5 = 0;
|
||||
if ($1 >>> 0 > 268435454 >>> 0) {
|
||||
abort(0 | 0, 4 | 0, 23 | 0, 39 | 0);
|
||||
abort();
|
||||
}
|
||||
if ($2 >>> 0 >= 32 >>> 0) break_2 : {
|
||||
case2_2 : {
|
||||
case1_2 : {
|
||||
case0_2 : {
|
||||
tablify_0 : {
|
||||
switch (($0 & 3 | 0) - 1 | 0 | 0) {
|
||||
case 0:
|
||||
break case0_2;
|
||||
case 1:
|
||||
break case1_2;
|
||||
case 2:
|
||||
break case2_2;
|
||||
default:
|
||||
break tablify_0;
|
||||
};
|
||||
};
|
||||
break break_2;
|
||||
};
|
||||
$4 = HEAPU32[$1 >> 2] | 0;
|
||||
$3 = $0;
|
||||
$0 = $3 + 1 | 0;
|
||||
$8 = $3;
|
||||
$3 = $1;
|
||||
$1 = $3 + 1 | 0;
|
||||
HEAP8[$8 >> 0] = HEAPU8[$3 >> 0] | 0;
|
||||
$3 = $0;
|
||||
$0 = $3 + 1 | 0;
|
||||
$9 = $3;
|
||||
$3 = $1;
|
||||
$1 = $3 + 1 | 0;
|
||||
HEAP8[$9 >> 0] = HEAPU8[$3 >> 0] | 0;
|
||||
$3 = $0;
|
||||
$0 = $3 + 1 | 0;
|
||||
$10 = $3;
|
||||
$3 = $1;
|
||||
$1 = $3 + 1 | 0;
|
||||
HEAP8[$10 >> 0] = HEAPU8[$3 >> 0] | 0;
|
||||
$2 = $2 - 3 | 0;
|
||||
continue_3 : do {
|
||||
if ($2 >>> 0 >= 17 >>> 0) {
|
||||
$3 = HEAPU32[($1 + 1 | 0) >> 2] | 0;
|
||||
HEAP32[$0 >> 2] = $4 >>> 24 | 0 | ($3 << 8 | 0) | 0;
|
||||
$4 = HEAPU32[($1 + 5 | 0) >> 2] | 0;
|
||||
HEAP32[($0 + 4 | 0) >> 2] = $3 >>> 24 | 0 | ($4 << 8 | 0) | 0;
|
||||
$3 = HEAPU32[($1 + 9 | 0) >> 2] | 0;
|
||||
HEAP32[($0 + 8 | 0) >> 2] = $4 >>> 24 | 0 | ($3 << 8 | 0) | 0;
|
||||
$4 = HEAPU32[($1 + 13 | 0) >> 2] | 0;
|
||||
HEAP32[($0 + 12 | 0) >> 2] = $3 >>> 24 | 0 | ($4 << 8 | 0) | 0;
|
||||
$1 = $1 + 16 | 0;
|
||||
$0 = $0 + 16 | 0;
|
||||
$2 = $2 - 16 | 0;
|
||||
continue continue_3;
|
||||
}
|
||||
break continue_3;
|
||||
} while (1);
|
||||
break break_2;
|
||||
};
|
||||
$4 = HEAPU32[$1 >> 2] | 0;
|
||||
$3 = $0;
|
||||
$0 = $3 + 1 | 0;
|
||||
$11 = $3;
|
||||
$3 = $1;
|
||||
$1 = $3 + 1 | 0;
|
||||
HEAP8[$11 >> 0] = HEAPU8[$3 >> 0] | 0;
|
||||
$3 = $0;
|
||||
$0 = $3 + 1 | 0;
|
||||
$12 = $3;
|
||||
$3 = $1;
|
||||
$1 = $3 + 1 | 0;
|
||||
HEAP8[$12 >> 0] = HEAPU8[$3 >> 0] | 0;
|
||||
$2 = $2 - 2 | 0;
|
||||
continue_4 : do {
|
||||
if ($2 >>> 0 >= 18 >>> 0) {
|
||||
$3 = HEAPU32[($1 + 2 | 0) >> 2] | 0;
|
||||
HEAP32[$0 >> 2] = $4 >>> 16 | 0 | ($3 << 16 | 0) | 0;
|
||||
$4 = HEAPU32[($1 + 6 | 0) >> 2] | 0;
|
||||
HEAP32[($0 + 4 | 0) >> 2] = $3 >>> 16 | 0 | ($4 << 16 | 0) | 0;
|
||||
$3 = HEAPU32[($1 + 10 | 0) >> 2] | 0;
|
||||
HEAP32[($0 + 8 | 0) >> 2] = $4 >>> 16 | 0 | ($3 << 16 | 0) | 0;
|
||||
$4 = HEAPU32[($1 + 14 | 0) >> 2] | 0;
|
||||
HEAP32[($0 + 12 | 0) >> 2] = $3 >>> 16 | 0 | ($4 << 16 | 0) | 0;
|
||||
$1 = $1 + 16 | 0;
|
||||
$0 = $0 + 16 | 0;
|
||||
$2 = $2 - 16 | 0;
|
||||
continue continue_4;
|
||||
}
|
||||
break continue_4;
|
||||
} while (1);
|
||||
break break_2;
|
||||
};
|
||||
$4 = HEAPU32[$1 >> 2] | 0;
|
||||
$3 = $0;
|
||||
$0 = $3 + 1 | 0;
|
||||
$13 = $3;
|
||||
$3 = $1;
|
||||
$1 = $3 + 1 | 0;
|
||||
HEAP8[$13 >> 0] = HEAPU8[$3 >> 0] | 0;
|
||||
$2 = $2 - 1 | 0;
|
||||
continue_5 : do {
|
||||
if ($2 >>> 0 >= 19 >>> 0) {
|
||||
$3 = HEAPU32[($1 + 3 | 0) >> 2] | 0;
|
||||
HEAP32[$0 >> 2] = $4 >>> 8 | 0 | ($3 << 24 | 0) | 0;
|
||||
$4 = HEAPU32[($1 + 7 | 0) >> 2] | 0;
|
||||
HEAP32[($0 + 4 | 0) >> 2] = $3 >>> 8 | 0 | ($4 << 24 | 0) | 0;
|
||||
$3 = HEAPU32[($1 + 11 | 0) >> 2] | 0;
|
||||
HEAP32[($0 + 8 | 0) >> 2] = $4 >>> 8 | 0 | ($3 << 24 | 0) | 0;
|
||||
$4 = HEAPU32[($1 + 15 | 0) >> 2] | 0;
|
||||
HEAP32[($0 + 12 | 0) >> 2] = $3 >>> 8 | 0 | ($4 << 24 | 0) | 0;
|
||||
$1 = $1 + 16 | 0;
|
||||
$0 = $0 + 16 | 0;
|
||||
$2 = $2 - 16 | 0;
|
||||
continue continue_5;
|
||||
}
|
||||
break continue_5;
|
||||
} while (1);
|
||||
};
|
||||
if ($2 & 16 | 0) {
|
||||
$3 = $0;
|
||||
$0 = $3 + 1 | 0;
|
||||
$14 = $3;
|
||||
$3 = $1;
|
||||
$1 = $3 + 1 | 0;
|
||||
HEAP8[$14 >> 0] = HEAPU8[$3 >> 0] | 0;
|
||||
$3 = $0;
|
||||
$0 = $3 + 1 | 0;
|
||||
$15 = $3;
|
||||
$3 = $1;
|
||||
$1 = $3 + 1 | 0;
|
||||
HEAP8[$15 >> 0] = HEAPU8[$3 >> 0] | 0;
|
||||
$3 = $0;
|
||||
$0 = $3 + 1 | 0;
|
||||
$16 = $3;
|
||||
$3 = $1;
|
||||
$1 = $3 + 1 | 0;
|
||||
HEAP8[$16 >> 0] = HEAPU8[$3 >> 0] | 0;
|
||||
$3 = $0;
|
||||
$0 = $3 + 1 | 0;
|
||||
$17 = $3;
|
||||
$3 = $1;
|
||||
$1 = $3 + 1 | 0;
|
||||
HEAP8[$17 >> 0] = HEAPU8[$3 >> 0] | 0;
|
||||
$3 = $0;
|
||||
$0 = $3 + 1 | 0;
|
||||
$18 = $3;
|
||||
$3 = $1;
|
||||
$1 = $3 + 1 | 0;
|
||||
HEAP8[$18 >> 0] = HEAPU8[$3 >> 0] | 0;
|
||||
$3 = $0;
|
||||
$0 = $3 + 1 | 0;
|
||||
$19 = $3;
|
||||
$3 = $1;
|
||||
$1 = $3 + 1 | 0;
|
||||
HEAP8[$19 >> 0] = HEAPU8[$3 >> 0] | 0;
|
||||
$3 = $0;
|
||||
$0 = $3 + 1 | 0;
|
||||
$20 = $3;
|
||||
$3 = $1;
|
||||
$1 = $3 + 1 | 0;
|
||||
HEAP8[$20 >> 0] = HEAPU8[$3 >> 0] | 0;
|
||||
$3 = $0;
|
||||
$0 = $3 + 1 | 0;
|
||||
$21 = $3;
|
||||
$3 = $1;
|
||||
$1 = $3 + 1 | 0;
|
||||
HEAP8[$21 >> 0] = HEAPU8[$3 >> 0] | 0;
|
||||
$3 = $0;
|
||||
$0 = $3 + 1 | 0;
|
||||
$22 = $3;
|
||||
$3 = $1;
|
||||
$1 = $3 + 1 | 0;
|
||||
HEAP8[$22 >> 0] = HEAPU8[$3 >> 0] | 0;
|
||||
$3 = $0;
|
||||
$0 = $3 + 1 | 0;
|
||||
$23 = $3;
|
||||
$3 = $1;
|
||||
$1 = $3 + 1 | 0;
|
||||
HEAP8[$23 >> 0] = HEAPU8[$3 >> 0] | 0;
|
||||
$3 = $0;
|
||||
$0 = $3 + 1 | 0;
|
||||
$24 = $3;
|
||||
$3 = $1;
|
||||
$1 = $3 + 1 | 0;
|
||||
HEAP8[$24 >> 0] = HEAPU8[$3 >> 0] | 0;
|
||||
$3 = $0;
|
||||
$0 = $3 + 1 | 0;
|
||||
$25 = $3;
|
||||
$3 = $1;
|
||||
$1 = $3 + 1 | 0;
|
||||
HEAP8[$25 >> 0] = HEAPU8[$3 >> 0] | 0;
|
||||
$3 = $0;
|
||||
$0 = $3 + 1 | 0;
|
||||
$26 = $3;
|
||||
$3 = $1;
|
||||
$1 = $3 + 1 | 0;
|
||||
HEAP8[$26 >> 0] = HEAPU8[$3 >> 0] | 0;
|
||||
$3 = $0;
|
||||
$0 = $3 + 1 | 0;
|
||||
$27 = $3;
|
||||
$3 = $1;
|
||||
$1 = $3 + 1 | 0;
|
||||
HEAP8[$27 >> 0] = HEAPU8[$3 >> 0] | 0;
|
||||
$3 = $0;
|
||||
$0 = $3 + 1 | 0;
|
||||
$28 = $3;
|
||||
$3 = $1;
|
||||
$1 = $3 + 1 | 0;
|
||||
HEAP8[$28 >> 0] = HEAPU8[$3 >> 0] | 0;
|
||||
$3 = $0;
|
||||
$0 = $3 + 1 | 0;
|
||||
$29 = $3;
|
||||
$3 = $1;
|
||||
$1 = $3 + 1 | 0;
|
||||
HEAP8[$29 >> 0] = HEAPU8[$3 >> 0] | 0;
|
||||
$3 = $1 << 2 | 0;
|
||||
$2 = $3;
|
||||
$4 = $lib_allocator_arena_allocate_memory(1 << (32 - Math_clz32($2 + 7 | 0) | 0) | 0 | 0) | 0;
|
||||
HEAP32[$4 >> 2] = $2;
|
||||
$2 = $4;
|
||||
if ($0) $5 = $0; else {
|
||||
$0 = $lib_allocator_arena_allocate_memory(8 | 0) | 0;
|
||||
HEAP32[$0 >> 2] = 0;
|
||||
HEAP32[($0 + 4 | 0) >> 2] = 0;
|
||||
$5 = $0;
|
||||
}
|
||||
if ($2 & 8 | 0) {
|
||||
$3 = $0;
|
||||
$0 = $3 + 1 | 0;
|
||||
$30 = $3;
|
||||
$3 = $1;
|
||||
$1 = $3 + 1 | 0;
|
||||
HEAP8[$30 >> 0] = HEAPU8[$3 >> 0] | 0;
|
||||
$3 = $0;
|
||||
$0 = $3 + 1 | 0;
|
||||
$31 = $3;
|
||||
$3 = $1;
|
||||
$1 = $3 + 1 | 0;
|
||||
HEAP8[$31 >> 0] = HEAPU8[$3 >> 0] | 0;
|
||||
$3 = $0;
|
||||
$0 = $3 + 1 | 0;
|
||||
$32 = $3;
|
||||
$3 = $1;
|
||||
$1 = $3 + 1 | 0;
|
||||
HEAP8[$32 >> 0] = HEAPU8[$3 >> 0] | 0;
|
||||
$3 = $0;
|
||||
$0 = $3 + 1 | 0;
|
||||
$33 = $3;
|
||||
$3 = $1;
|
||||
$1 = $3 + 1 | 0;
|
||||
HEAP8[$33 >> 0] = HEAPU8[$3 >> 0] | 0;
|
||||
$3 = $0;
|
||||
$0 = $3 + 1 | 0;
|
||||
$34 = $3;
|
||||
$3 = $1;
|
||||
$1 = $3 + 1 | 0;
|
||||
HEAP8[$34 >> 0] = HEAPU8[$3 >> 0] | 0;
|
||||
$3 = $0;
|
||||
$0 = $3 + 1 | 0;
|
||||
$35 = $3;
|
||||
$3 = $1;
|
||||
$1 = $3 + 1 | 0;
|
||||
HEAP8[$35 >> 0] = HEAPU8[$3 >> 0] | 0;
|
||||
$3 = $0;
|
||||
$0 = $3 + 1 | 0;
|
||||
$36 = $3;
|
||||
$3 = $1;
|
||||
$1 = $3 + 1 | 0;
|
||||
HEAP8[$36 >> 0] = HEAPU8[$3 >> 0] | 0;
|
||||
$3 = $0;
|
||||
$0 = $3 + 1 | 0;
|
||||
$37 = $3;
|
||||
$3 = $1;
|
||||
$1 = $3 + 1 | 0;
|
||||
HEAP8[$37 >> 0] = HEAPU8[$3 >> 0] | 0;
|
||||
}
|
||||
if ($2 & 4 | 0) {
|
||||
$3 = $0;
|
||||
$0 = $3 + 1 | 0;
|
||||
$38 = $3;
|
||||
$3 = $1;
|
||||
$1 = $3 + 1 | 0;
|
||||
HEAP8[$38 >> 0] = HEAPU8[$3 >> 0] | 0;
|
||||
$3 = $0;
|
||||
$0 = $3 + 1 | 0;
|
||||
$39 = $3;
|
||||
$3 = $1;
|
||||
$1 = $3 + 1 | 0;
|
||||
HEAP8[$39 >> 0] = HEAPU8[$3 >> 0] | 0;
|
||||
$3 = $0;
|
||||
$0 = $3 + 1 | 0;
|
||||
$40 = $3;
|
||||
$3 = $1;
|
||||
$1 = $3 + 1 | 0;
|
||||
HEAP8[$40 >> 0] = HEAPU8[$3 >> 0] | 0;
|
||||
$3 = $0;
|
||||
$0 = $3 + 1 | 0;
|
||||
$41 = $3;
|
||||
$3 = $1;
|
||||
$1 = $3 + 1 | 0;
|
||||
HEAP8[$41 >> 0] = HEAPU8[$3 >> 0] | 0;
|
||||
}
|
||||
if ($2 & 2 | 0) {
|
||||
$3 = $0;
|
||||
$0 = $3 + 1 | 0;
|
||||
$42 = $3;
|
||||
$3 = $1;
|
||||
$1 = $3 + 1 | 0;
|
||||
HEAP8[$42 >> 0] = HEAPU8[$3 >> 0] | 0;
|
||||
$3 = $0;
|
||||
$0 = $3 + 1 | 0;
|
||||
$43 = $3;
|
||||
$3 = $1;
|
||||
$1 = $3 + 1 | 0;
|
||||
HEAP8[$43 >> 0] = HEAPU8[$3 >> 0] | 0;
|
||||
}
|
||||
if ($2 & 1 | 0) {
|
||||
$3 = $0;
|
||||
$44 = $3;
|
||||
$3 = $1;
|
||||
HEAP8[$44 >> 0] = HEAPU8[$3 >> 0] | 0;
|
||||
}
|
||||
}
|
||||
|
||||
function $lib_memory_move_memory($0, $1, $2) {
|
||||
$0 = $0 | 0;
|
||||
$1 = $1 | 0;
|
||||
$2 = $2 | 0;
|
||||
var $3 = 0, i64toi32_i32$1 = 0, i64toi32_i32$0 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, $10 = 0, wasm2asm_i32$0 = 0, wasm2asm_i32$1 = 0;
|
||||
if (($0 | 0) == ($1 | 0)) return;
|
||||
$3 = ($1 + $2 | 0) >>> 0 <= $0 >>> 0;
|
||||
if ($3) $6 = $3; else $6 = ($0 + $2 | 0) >>> 0 <= $1 >>> 0;
|
||||
if ($6 & 1 | 0) {
|
||||
$lib_memory_copy_memory($0 | 0, $1 | 0, $2 | 0);
|
||||
return;
|
||||
}
|
||||
if ($0 >>> 0 < $1 >>> 0) {
|
||||
if (($1 & 7 | 0 | 0) == ($0 & 7 | 0 | 0)) {
|
||||
continue_0 : do {
|
||||
if ($0 & 7 | 0) {
|
||||
if (($2 | 0) == (0 | 0)) return;
|
||||
$2 = $2 - 1 | 0;
|
||||
$3 = $0;
|
||||
$0 = $3 + 1 | 0;
|
||||
$7 = $3;
|
||||
$3 = $1;
|
||||
$1 = $3 + 1 | 0;
|
||||
HEAP8[$7 >> 0] = HEAPU8[$3 >> 0] | 0;
|
||||
continue continue_0;
|
||||
}
|
||||
break continue_0;
|
||||
} while (1);
|
||||
continue_1 : do {
|
||||
if ($2 >>> 0 >= 8 >>> 0) {
|
||||
i64toi32_i32$1 = $0;
|
||||
$8 = i64toi32_i32$1;
|
||||
i64toi32_i32$1 = $1;
|
||||
i64toi32_i32$0 = (wasm2asm_i32$0 = i64toi32_i32$1, HEAPU8[(wasm2asm_i32$0 + 4 | 0) >> 0] | 0 | 0 | (HEAPU8[(wasm2asm_i32$0 + 5 | 0) >> 0] | 0 | 0) << 8 | (HEAPU8[(wasm2asm_i32$0 + 6 | 0) >> 0] | 0 | 0) << 16 | (HEAPU8[(wasm2asm_i32$0 + 7 | 0) >> 0] | 0 | 0) << 24);
|
||||
HEAP32[$8 >> 2] = HEAPU32[i64toi32_i32$1 >> 2] | 0;
|
||||
(wasm2asm_i32$0 = i64toi32_i32$1, wasm2asm_i32$1 = i64toi32_i32$0), ((HEAP8[(wasm2asm_i32$0 + 4 | 0) >> 0] = wasm2asm_i32$1 & 255 | 0, HEAP8[(wasm2asm_i32$0 + 5 | 0) >> 0] = (wasm2asm_i32$1 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2asm_i32$0 + 6 | 0) >> 0] = (wasm2asm_i32$1 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2asm_i32$0 + 7 | 0) >> 0] = (wasm2asm_i32$1 >>> 24 | 0) & 255 | 0;
|
||||
$2 = $2 - 8 | 0;
|
||||
$0 = $0 + 8 | 0;
|
||||
$1 = $1 + 8 | 0;
|
||||
continue continue_1;
|
||||
}
|
||||
break continue_1;
|
||||
} while (1);
|
||||
}
|
||||
continue_2 : do {
|
||||
if ($2) {
|
||||
$3 = $0;
|
||||
$0 = $3 + 1 | 0;
|
||||
$9 = $3;
|
||||
$3 = $1;
|
||||
$1 = $3 + 1 | 0;
|
||||
HEAP8[$9 >> 0] = HEAPU8[$3 >> 0] | 0;
|
||||
$2 = $2 - 1 | 0;
|
||||
continue continue_2;
|
||||
}
|
||||
break continue_2;
|
||||
} while (1);
|
||||
} else {
|
||||
if (($1 & 7 | 0 | 0) == ($0 & 7 | 0 | 0)) {
|
||||
continue_3 : do {
|
||||
if (($0 + $2 | 0) & 7 | 0) {
|
||||
if (($2 | 0) == (0 | 0)) return;
|
||||
$2 = $2 - 1 | 0;
|
||||
HEAP8[($0 + $2 | 0) >> 0] = HEAPU8[($1 + $2 | 0) >> 0] | 0;
|
||||
continue continue_3;
|
||||
}
|
||||
break continue_3;
|
||||
} while (1);
|
||||
continue_4 : do {
|
||||
if ($2 >>> 0 >= 8 >>> 0) {
|
||||
$2 = $2 - 8 | 0;
|
||||
i64toi32_i32$1 = $0 + $2 | 0;
|
||||
$10 = i64toi32_i32$1;
|
||||
i64toi32_i32$1 = $1 + $2 | 0;
|
||||
i64toi32_i32$0 = (wasm2asm_i32$0 = i64toi32_i32$1, HEAPU8[(wasm2asm_i32$0 + 4 | 0) >> 0] | 0 | 0 | (HEAPU8[(wasm2asm_i32$0 + 5 | 0) >> 0] | 0 | 0) << 8 | (HEAPU8[(wasm2asm_i32$0 + 6 | 0) >> 0] | 0 | 0) << 16 | (HEAPU8[(wasm2asm_i32$0 + 7 | 0) >> 0] | 0 | 0) << 24);
|
||||
HEAP32[$10 >> 2] = HEAPU32[i64toi32_i32$1 >> 2] | 0;
|
||||
(wasm2asm_i32$0 = i64toi32_i32$1, wasm2asm_i32$1 = i64toi32_i32$0), ((HEAP8[(wasm2asm_i32$0 + 4 | 0) >> 0] = wasm2asm_i32$1 & 255 | 0, HEAP8[(wasm2asm_i32$0 + 5 | 0) >> 0] = (wasm2asm_i32$1 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2asm_i32$0 + 6 | 0) >> 0] = (wasm2asm_i32$1 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2asm_i32$0 + 7 | 0) >> 0] = (wasm2asm_i32$1 >>> 24 | 0) & 255 | 0;
|
||||
continue continue_4;
|
||||
}
|
||||
break continue_4;
|
||||
} while (1);
|
||||
}
|
||||
continue_5 : do {
|
||||
if ($2) {
|
||||
$2 = $2 - 1 | 0;
|
||||
HEAP8[($0 + $2 | 0) >> 0] = HEAPU8[($1 + $2 | 0) >> 0] | 0;
|
||||
continue continue_5;
|
||||
}
|
||||
break continue_5;
|
||||
} while (1);
|
||||
}
|
||||
}
|
||||
|
||||
function $lib_internal_arraybuffer_reallocUnsafe($0, $1) {
|
||||
$0 = $0 | 0;
|
||||
$1 = $1 | 0;
|
||||
var $2 = 0, $3 = 0;
|
||||
$2 = HEAP32[$0 >> 2] | 0;
|
||||
if (($1 | 0) > ($2 | 0)) {
|
||||
$3 = $2;
|
||||
if (($1 | 0) <= ((1 << (32 - Math_clz32($3 + 7 | 0) | 0) | 0) - 8 | 0 | 0)) {
|
||||
HEAP32[$0 >> 2] = $1;
|
||||
$lib_memory_set_memory(($0 + 8 | 0) + $2 | 0 | 0, 0 | 0, $1 - $2 | 0 | 0);
|
||||
} else {
|
||||
$3 = $lib_internal_arraybuffer_allocUnsafe($1 | 0) | 0;
|
||||
$lib_memory_move_memory($3 + 8 | 0 | 0, $0 + 8 | 0 | 0, $2 | 0);
|
||||
$lib_memory_set_memory(($3 + 8 | 0) + $2 | 0 | 0, 0 | 0, $1 - $2 | 0 | 0);
|
||||
return $3 | 0;
|
||||
}
|
||||
} else if (($1 | 0) < ($2 | 0)) HEAP32[$0 >> 2] = $1;;
|
||||
HEAP32[$5 >> 2] = $2;
|
||||
HEAP32[($0 + 4 | 0) >> 2] = $1;
|
||||
$lib_memory_set_memory($2 + 8 | 0 | 0, 0 | 0, $3 | 0);
|
||||
return $0 | 0;
|
||||
}
|
||||
|
||||
function $lib_array_Array_Body____set($0, $1, $2) {
|
||||
$0 = $0 | 0;
|
||||
$1 = $1 | 0;
|
||||
$2 = $2 | 0;
|
||||
var $3 = 0;
|
||||
$3 = HEAPU32[$0 >> 2] | 0;
|
||||
if ($1 >>> 0 >= ((HEAP32[$3 >> 2] | 0) >>> 2 | 0) >>> 0) {
|
||||
if ($1 >>> 0 >= 268435454 >>> 0) {
|
||||
abort(0 | 0, 4 | 0, 81 | 0, 41 | 0);
|
||||
abort();
|
||||
}
|
||||
$3 = $lib_internal_arraybuffer_reallocUnsafe($3 | 0, ($1 + 1 | 0) << 2 | 0 | 0) | 0;
|
||||
HEAP32[$0 >> 2] = $3;
|
||||
HEAP32[($0 + 4 | 0) >> 2] = $1 + 1 | 0;
|
||||
}
|
||||
HEAP32[(($3 + ($1 << 2 | 0) | 0) + 8 | 0) >> 2] = $2;
|
||||
}
|
||||
|
||||
function assembly_index_NBodySystem_constructor($0, $1) {
|
||||
$0 = $0 | 0;
|
||||
$1 = $1 | 0;
|
||||
var $2 = 0, $3 = 0, $4 = 0.0, $9 = 0, $5 = 0.0, $6 = 0.0, $7 = 0.0, $9 = 0, $8 = 0, $11 = 0, $12 = 0;
|
||||
$3 = $1;
|
||||
$8 = HEAP32[($3 + 4 | 0) >> 2] | 0;
|
||||
var $2 = 0, $3 = 0, $4 = 0.0, $5 = 0.0, $6 = 0.0, $7 = 0.0, $8 = 0, $8 = 0, $10 = 0;
|
||||
$2 = $1;
|
||||
$8 = HEAP32[($2 + 4 | 0) >> 2] | 0;
|
||||
continue_0 : do {
|
||||
if (($2 | 0) < ($8 | 0)) {
|
||||
$9 = $2;
|
||||
$3 = $1;
|
||||
$3 = HEAPU32[$3 >> 2] | 0;
|
||||
if ($9 >>> 0 < ((HEAP32[$3 >> 2] | 0) >>> 2 | 0) >>> 0) $11 = HEAPU32[(($3 + ($9 << 2 | 0) | 0) + 8 | 0) >> 2] | 0; else abort();
|
||||
$3 = $11;
|
||||
$4 = +HEAPF64[($3 + 48 | 0) >> 3];
|
||||
$5 = $5 + +HEAPF64[($3 + 24 | 0) >> 3] * $4;
|
||||
$6 = $6 + +HEAPF64[($3 + 32 | 0) >> 3] * $4;
|
||||
$7 = $7 + +HEAPF64[($3 + 40 | 0) >> 3] * $4;
|
||||
$2 = $2 + 1 | 0;
|
||||
if (($3 | 0) < ($8 | 0)) {
|
||||
$2 = $3;
|
||||
$2 = HEAPU32[(((HEAPU32[$1 >> 2] | 0) + ($2 << 2 | 0) | 0) + 8 | 0) >> 2] | 0;
|
||||
$4 = +HEAPF64[($2 + 48 | 0) >> 3];
|
||||
$5 = $5 + +HEAPF64[($2 + 24 | 0) >> 3] * $4;
|
||||
$6 = $6 + +HEAPF64[($2 + 32 | 0) >> 3] * $4;
|
||||
$7 = $7 + +HEAPF64[($2 + 40 | 0) >> 3] * $4;
|
||||
$3 = $3 + 1 | 0;
|
||||
continue continue_0;
|
||||
}
|
||||
break continue_0;
|
||||
} while (1);
|
||||
$2 = $1;
|
||||
$2 = HEAPU32[$2 >> 2] | 0;
|
||||
if (0 >>> 0 < ((HEAP32[$2 >> 2] | 0) >>> 2 | 0) >>> 0) $12 = HEAPU32[(($2 + 0 | 0) + 8 | 0) >> 2] | 0; else abort();
|
||||
$2 = $12;
|
||||
if (0 >>> 0 < ((HEAP32[$2 >> 2] | 0) >>> 2 | 0) >>> 0) $10 = HEAPU32[(($2 + 0 | 0) + 8 | 0) >> 2] | 0; else abort();
|
||||
$2 = $10;
|
||||
HEAPF64[($2 + 24 | 0) >> 3] = -$5 / 39.47841760435743;
|
||||
HEAPF64[($2 + 32 | 0) >> 3] = -$6 / 39.47841760435743;
|
||||
HEAPF64[($2 + 40 | 0) >> 3] = -$7 / 39.47841760435743;
|
||||
if ($0) $9 = $0; else {
|
||||
$2 = $lib_allocator_arena_allocate_memory(4 | 0) | 0;
|
||||
HEAP32[$2 >> 2] = $1;
|
||||
$9 = $2;
|
||||
if ($0) $8 = $0; else {
|
||||
$0 = $lib_allocator_arena_allocate_memory(4 | 0) | 0;
|
||||
HEAP32[$0 >> 2] = $1;
|
||||
$8 = $0;
|
||||
}
|
||||
return $9 | 0;
|
||||
return $8 | 0;
|
||||
}
|
||||
|
||||
function assembly_index_init() {
|
||||
var $0 = 0;
|
||||
$0 = $lib_array_Array_Body__constructor(0 | 0, 5 | 0) | 0;
|
||||
$lib_array_Array_Body____set($0 | 0, 0 | 0, assembly_index_Body_constructor(0 | 0, +(0.0), +(0.0), +(0.0), +(0.0), +(0.0), +(0.0), +(39.47841760435743)) | 0 | 0);
|
||||
$lib_array_Array_Body____set($0 | 0, 1 | 0, assembly_index_Body_constructor(0 | 0, +(4.841431442464721), +(-1.1603200440274284), +(-.10362204447112311), +(.606326392995832), +(2.81198684491626), +(-.02521836165988763), +(.03769367487038949)) | 0 | 0);
|
||||
$lib_array_Array_Body____set($0 | 0, 2 | 0, assembly_index_Body_constructor(0 | 0, +(8.34336671824458), +(4.124798564124305), +(-.4035234171143214), +(-1.0107743461787924), +(1.8256623712304119), +(.008415761376584154), +(.011286326131968767)) | 0 | 0);
|
||||
$lib_array_Array_Body____set($0 | 0, 3 | 0, assembly_index_Body_constructor(0 | 0, +(12.894369562139131), +(-15.111151401698631), +(-.22330757889265573), +(1.0827910064415354), +(.8687130181696082), +(-.010832637401363636), +(1.7237240570597112e-03)) | 0 | 0);
|
||||
$lib_array_Array_Body____set($0 | 0, 4 | 0, assembly_index_Body_constructor(0 | 0, +(15.379697114850917), +(-25.919314609987964), +(.17925877295037118), +(.979090732243898), +(.5946989986476762), +(-.034755955504078104), +(2.0336868699246304e-03)) | 0 | 0);
|
||||
assembly_index_system = assembly_index_NBodySystem_constructor(0 | 0, $0 | 0) | 0;
|
||||
var $2 = 0, $0 = 0, $1 = 0;
|
||||
$1 = $lib_array_Array_Body__constructor(0 | 0, 5 | 0) | 0;
|
||||
$2 = $1;
|
||||
$0 = assembly_index_Body_constructor(0 | 0, +(0.0), +(0.0), +(0.0), +(0.0), +(0.0), +(0.0), +(39.47841760435743)) | 0;
|
||||
HEAP32[(((HEAPU32[$2 >> 2] | 0) + 0 | 0) + 8 | 0) >> 2] = $0;
|
||||
$0 = assembly_index_Body_constructor(0 | 0, +(4.841431442464721), +(-1.1603200440274284), +(-.10362204447112311), +(.606326392995832), +(2.81198684491626), +(-.02521836165988763), +(.03769367487038949)) | 0;
|
||||
$2 = $1;
|
||||
HEAP32[(((HEAPU32[$2 >> 2] | 0) + 4 | 0) + 8 | 0) >> 2] = $0;
|
||||
$0 = assembly_index_Body_constructor(0 | 0, +(8.34336671824458), +(4.124798564124305), +(-.4035234171143214), +(-1.0107743461787924), +(1.8256623712304119), +(.008415761376584154), +(.011286326131968767)) | 0;
|
||||
$2 = $1;
|
||||
HEAP32[(((HEAPU32[$2 >> 2] | 0) + 8 | 0) + 8 | 0) >> 2] = $0;
|
||||
$0 = assembly_index_Body_constructor(0 | 0, +(12.894369562139131), +(-15.111151401698631), +(-.22330757889265573), +(1.0827910064415354), +(.8687130181696082), +(-.010832637401363636), +(1.7237240570597112e-03)) | 0;
|
||||
$2 = $1;
|
||||
HEAP32[(((HEAPU32[$2 >> 2] | 0) + 12 | 0) + 8 | 0) >> 2] = $0;
|
||||
$0 = assembly_index_Body_constructor(0 | 0, +(15.379697114850917), +(-25.919314609987964), +(.17925877295037118), +(.979090732243898), +(.5946989986476762), +(-.034755955504078104), +(2.0336868699246304e-03)) | 0;
|
||||
$2 = $1;
|
||||
HEAP32[(((HEAPU32[$2 >> 2] | 0) + 16 | 0) + 8 | 0) >> 2] = $0;
|
||||
assembly_index_system = assembly_index_NBodySystem_constructor(0 | 0, $1 | 0) | 0;
|
||||
}
|
||||
|
||||
function assembly_index_getBody($0) {
|
||||
@ -739,59 +242,52 @@ function asmFunc(global, env, buffer) {
|
||||
function assembly_index_NBodySystem_advance($0, $1) {
|
||||
$0 = $0 | 0;
|
||||
$1 = +$1;
|
||||
var $2 = 0, $4 = 0.0, $3 = 0, $5 = 0.0, $6 = 0, $7 = 0.0, $8 = 0.0, $9 = 0.0, $10 = 0.0, $11 = 0.0, $12 = 0.0, $13 = 0, $14 = 0, $19 = 0, $16 = 0, $15 = 0.0, $16 = 0.0, $17 = 0.0, $18 = 0.0, $21 = 0.0, $22 = 0;
|
||||
var $2 = 0, $3 = 0, $4 = 0.0, $9 = 0.0, $5 = 0, $6 = 0.0, $7 = 0.0, $8 = 0.0, $10 = 0.0, $11 = 0.0, $12 = 0.0, $13 = 0, $14 = 0, $15 = 0.0, $16 = 0.0, $17 = 0.0, $18 = 0.0;
|
||||
$13 = HEAPU32[$0 >> 2] | 0;
|
||||
$0 = $13;
|
||||
$14 = HEAP32[($0 + 4 | 0) >> 2] | 0;
|
||||
continue_0 : do {
|
||||
if ($6 >>> 0 < $14 >>> 0) {
|
||||
$3 = $6;
|
||||
if ($5 >>> 0 < $14 >>> 0) {
|
||||
$0 = $13;
|
||||
$0 = HEAPU32[$0 >> 2] | 0;
|
||||
if ($3 >>> 0 < ((HEAP32[$0 >> 2] | 0) >>> 2 | 0) >>> 0) $16 = HEAPU32[(($0 + ($3 << 2 | 0) | 0) + 8 | 0) >> 2] | 0; else abort();
|
||||
$0 = $16;
|
||||
$3 = $5;
|
||||
$0 = HEAPU32[(((HEAPU32[$0 >> 2] | 0) + ($3 << 2 | 0) | 0) + 8 | 0) >> 2] | 0;
|
||||
$15 = +HEAPF64[$0 >> 3];
|
||||
$16 = +HEAPF64[($0 + 8 | 0) >> 3];
|
||||
$17 = +HEAPF64[($0 + 16 | 0) >> 3];
|
||||
$7 = +HEAPF64[($0 + 24 | 0) >> 3];
|
||||
$8 = +HEAPF64[($0 + 32 | 0) >> 3];
|
||||
$9 = +HEAPF64[($0 + 40 | 0) >> 3];
|
||||
$6 = +HEAPF64[($0 + 24 | 0) >> 3];
|
||||
$7 = +HEAPF64[($0 + 32 | 0) >> 3];
|
||||
$8 = +HEAPF64[($0 + 40 | 0) >> 3];
|
||||
$18 = +HEAPF64[($0 + 48 | 0) >> 3];
|
||||
$3 = $6 + 1 | 0;
|
||||
$3 = $5 + 1 | 0;
|
||||
continue_1 : do {
|
||||
if ($3 >>> 0 < $14 >>> 0) {
|
||||
$21 = $15;
|
||||
$19 = $3;
|
||||
$2 = $13;
|
||||
$2 = HEAPU32[$2 >> 2] | 0;
|
||||
if ($19 >>> 0 < ((HEAP32[$2 >> 2] | 0) >>> 2 | 0) >>> 0) $22 = HEAPU32[(($2 + ($19 << 2 | 0) | 0) + 8 | 0) >> 2] | 0; else abort();
|
||||
$2 = $22;
|
||||
$10 = $21 - +HEAPF64[$2 >> 3];
|
||||
$2 = HEAPU32[(((HEAPU32[$2 >> 2] | 0) + ($3 << 2 | 0) | 0) + 8 | 0) >> 2] | 0;
|
||||
$10 = $15 - +HEAPF64[$2 >> 3];
|
||||
$11 = $16 - +HEAPF64[($2 + 8 | 0) >> 3];
|
||||
$12 = $17 - +HEAPF64[($2 + 16 | 0) >> 3];
|
||||
$4 = $10 * $10 + $11 * $11 + $12 * $12;
|
||||
$5 = Math_sqrt($4);
|
||||
$4 = $1 / ($4 * $5);
|
||||
$5 = $18 * $4;
|
||||
$4 = +HEAPF64[($2 + 48 | 0) >> 3] * $4;
|
||||
$7 = $7 - $10 * $4;
|
||||
$8 = $8 - $11 * $4;
|
||||
$9 = $9 - $12 * $4;
|
||||
HEAPF64[($2 + 24 | 0) >> 3] = +HEAPF64[($2 + 24 | 0) >> 3] + $10 * $5;
|
||||
HEAPF64[($2 + 32 | 0) >> 3] = +HEAPF64[($2 + 32 | 0) >> 3] + $11 * $5;
|
||||
HEAPF64[($2 + 40 | 0) >> 3] = +HEAPF64[($2 + 40 | 0) >> 3] + $12 * $5;
|
||||
$9 = $1 / ($4 * Math_sqrt($4));
|
||||
$4 = $18 * $9;
|
||||
$9 = +HEAPF64[($2 + 48 | 0) >> 3] * $9;
|
||||
$6 = $6 - $10 * $9;
|
||||
$7 = $7 - $11 * $9;
|
||||
$8 = $8 - $12 * $9;
|
||||
HEAPF64[($2 + 24 | 0) >> 3] = +HEAPF64[($2 + 24 | 0) >> 3] + $10 * $4;
|
||||
HEAPF64[($2 + 32 | 0) >> 3] = +HEAPF64[($2 + 32 | 0) >> 3] + $11 * $4;
|
||||
HEAPF64[($2 + 40 | 0) >> 3] = +HEAPF64[($2 + 40 | 0) >> 3] + $12 * $4;
|
||||
$3 = $3 + 1 | 0;
|
||||
continue continue_1;
|
||||
}
|
||||
break continue_1;
|
||||
} while (1);
|
||||
HEAPF64[($0 + 24 | 0) >> 3] = $7;
|
||||
HEAPF64[($0 + 32 | 0) >> 3] = $8;
|
||||
HEAPF64[($0 + 40 | 0) >> 3] = $9;
|
||||
HEAPF64[$0 >> 3] = +HEAPF64[$0 >> 3] + $1 * $7;
|
||||
HEAPF64[($0 + 8 | 0) >> 3] = +HEAPF64[($0 + 8 | 0) >> 3] + $1 * $8;
|
||||
HEAPF64[($0 + 16 | 0) >> 3] = +HEAPF64[($0 + 16 | 0) >> 3] + $1 * $9;
|
||||
$6 = $6 + 1 | 0;
|
||||
HEAPF64[($0 + 24 | 0) >> 3] = $6;
|
||||
HEAPF64[($0 + 32 | 0) >> 3] = $7;
|
||||
HEAPF64[($0 + 40 | 0) >> 3] = $8;
|
||||
HEAPF64[$0 >> 3] = +HEAPF64[$0 >> 3] + $1 * $6;
|
||||
HEAPF64[($0 + 8 | 0) >> 3] = +HEAPF64[($0 + 8 | 0) >> 3] + $1 * $7;
|
||||
HEAPF64[($0 + 16 | 0) >> 3] = +HEAPF64[($0 + 16 | 0) >> 3] + $1 * $8;
|
||||
$5 = $5 + 1 | 0;
|
||||
continue continue_0;
|
||||
}
|
||||
break continue_0;
|
||||
@ -800,43 +296,41 @@ function asmFunc(global, env, buffer) {
|
||||
|
||||
function assembly_index_NBodySystem_energy($0) {
|
||||
$0 = $0 | 0;
|
||||
var $1 = 0.0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $10 = 0.0, $11 = 0, $6 = 0.0, $9 = 0, $7 = 0.0, $8 = 0.0, $9 = 0.0, $13 = 0.0, $14 = 0.0, $15 = 0.0, $16 = 0.0, $17 = 0, $18 = 0.0, $19 = 0.0;
|
||||
var $1 = 0.0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $10 = 0.0, $11 = 0, $6 = 0.0, $7 = 0.0, $8 = 0.0, $9 = 0.0, $12 = 0.0, $13 = 0.0, $14 = 0.0, $15 = 0.0, $16 = 0, $17 = 0.0, $18 = 0.0;
|
||||
$4 = HEAPU32[$0 >> 2] | 0;
|
||||
$0 = $4;
|
||||
$5 = HEAP32[($0 + 4 | 0) >> 2] | 0;
|
||||
continue_0 : do {
|
||||
if ($3 >>> 0 < $5 >>> 0) {
|
||||
$2 = $3;
|
||||
$0 = $4;
|
||||
$0 = HEAPU32[$0 >> 2] | 0;
|
||||
if ($2 >>> 0 < ((HEAP32[$0 >> 2] | 0) >>> 2 | 0) >>> 0) $9 = HEAPU32[(($0 + ($2 << 2 | 0) | 0) + 8 | 0) >> 2] | 0; else abort();
|
||||
$0 = $9;
|
||||
$2 = $3;
|
||||
$0 = HEAPU32[(((HEAPU32[$0 >> 2] | 0) + ($2 << 2 | 0) | 0) + 8 | 0) >> 2] | 0;
|
||||
$7 = +HEAPF64[$0 >> 3];
|
||||
$8 = +HEAPF64[($0 + 8 | 0) >> 3];
|
||||
$9 = +HEAPF64[($0 + 16 | 0) >> 3];
|
||||
$13 = $1;
|
||||
$12 = $1;
|
||||
$10 = +HEAPF64[($0 + 48 | 0) >> 3];
|
||||
$1 = +HEAPF64[($0 + 24 | 0) >> 3];
|
||||
$14 = $1 * $1;
|
||||
$13 = $1 * $1;
|
||||
$1 = +HEAPF64[($0 + 32 | 0) >> 3];
|
||||
$15 = $14 + $1 * $1;
|
||||
$14 = $13 + $1 * $1;
|
||||
$1 = +HEAPF64[($0 + 40 | 0) >> 3];
|
||||
$1 = $13 + .5 * $10 * ($15 + $1 * $1);
|
||||
$1 = $12 + .5 * $10 * ($14 + $1 * $1);
|
||||
$0 = $3 + 1 | 0;
|
||||
continue_1 : do {
|
||||
if ($0 >>> 0 < $5 >>> 0) {
|
||||
$16 = $7;
|
||||
$15 = $7;
|
||||
$11 = $0;
|
||||
$2 = $4;
|
||||
$2 = HEAPU32[$2 >> 2] | 0;
|
||||
if ($11 >>> 0 < ((HEAP32[$2 >> 2] | 0) >>> 2 | 0) >>> 0) $17 = HEAPU32[(($2 + ($11 << 2 | 0) | 0) + 8 | 0) >> 2] | 0; else abort();
|
||||
$2 = $17;
|
||||
$6 = $16 - +HEAPF64[$2 >> 3];
|
||||
$18 = $1;
|
||||
if ($11 >>> 0 < ((HEAP32[$2 >> 2] | 0) >>> 2 | 0) >>> 0) $16 = HEAPU32[(($2 + ($11 << 2 | 0) | 0) + 8 | 0) >> 2] | 0; else abort();
|
||||
$2 = $16;
|
||||
$6 = $15 - +HEAPF64[$2 >> 3];
|
||||
$17 = $1;
|
||||
$1 = $8 - +HEAPF64[($2 + 8 | 0) >> 3];
|
||||
$19 = $6 * $6 + $1 * $1;
|
||||
$18 = $6 * $6 + $1 * $1;
|
||||
$1 = $9 - +HEAPF64[($2 + 16 | 0) >> 3];
|
||||
$1 = $18 - $10 * +HEAPF64[($2 + 48 | 0) >> 3] / Math_sqrt($19 + $1 * $1);
|
||||
$1 = $17 - $10 * +HEAPF64[($2 + 48 | 0) >> 3] / Math_sqrt($18 + $1 * $1);
|
||||
$0 = $0 + 1 | 0;
|
||||
continue continue_1;
|
||||
}
|
||||
|
Binary file not shown.
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -1,7 +1,7 @@
|
||||
const fs = require("fs");
|
||||
const compiled = new WebAssembly.Module(fs.readFileSync(__dirname + "/build/optimized.wasm"));
|
||||
const imports = {
|
||||
env: { abort: function() { throw Error("abort called"); } }
|
||||
env: { abort: function(filename, line, column) { throw Error("abort called at " + line + ":" + colum); } }
|
||||
};
|
||||
Object.defineProperty(module, "exports", {
|
||||
get: () => new WebAssembly.Instance(compiled, imports).exports
|
||||
|
@ -35,25 +35,30 @@ function test(nbody, steps) {
|
||||
}
|
||||
|
||||
var steps = process.argv.length > 2 ? parseInt(process.argv[2], 10) : 20000000;
|
||||
var time;
|
||||
|
||||
console.log("Warming up ...");
|
||||
test(nbodyWASM, 100000);
|
||||
test(nbodyASMJS, 100000);
|
||||
test(nbodyJS, 100000);
|
||||
console.log("Performing " + steps + " steps (WASM) ...");
|
||||
time = test(nbodyWASM, steps);
|
||||
console.log("Took " + (time[0] * 1e3 + time[1] / 1e6) + "ms");
|
||||
|
||||
setTimeout(() => {
|
||||
var time;
|
||||
console.log("Performing " + steps + " steps (ASMJS) ...");
|
||||
time = test(nbodyASMJS, steps);
|
||||
console.log("Took " + (time[0] * 1e3 + time[1] / 1e6) + "ms");
|
||||
|
||||
console.log("Performing " + steps + " steps (WASM) ...");
|
||||
time = test(nbodyWASM, steps);
|
||||
console.log("Took " + (time[0] * 1e3 + time[1] / 1e6) + "ms");
|
||||
console.log("Performing " + steps + " steps (JS) ...");
|
||||
time = test(nbodyJS, steps);
|
||||
console.log("Took " + (time[0] * 1e3 + time[1] / 1e6) + "ms");
|
||||
|
||||
console.log("Performing " + steps + " steps (ASMJS) ...");
|
||||
time = test(nbodyASMJS, steps);
|
||||
console.log("Took " + (time[0] * 1e3 + time[1] / 1e6) + "ms");
|
||||
console.log("\nWARMED UP:\n");
|
||||
|
||||
console.log("Performing " + steps + " steps (JS) ...");
|
||||
time = test(nbodyJS, steps);
|
||||
console.log("Took " + (time[0] * 1e3 + time[1] / 1e6) + "ms");
|
||||
console.log("Performing " + steps + " steps (WASM) ...");
|
||||
time = test(nbodyWASM, steps);
|
||||
console.log("Took " + (time[0] * 1e3 + time[1] / 1e6) + "ms");
|
||||
|
||||
}, 1000);
|
||||
console.log("Performing " + steps + " steps (ASMJS) ...");
|
||||
time = test(nbodyASMJS, steps);
|
||||
console.log("Took " + (time[0] * 1e3 + time[1] / 1e6) + "ms");
|
||||
|
||||
console.log("Performing " + steps + " steps (JS) ...");
|
||||
time = test(nbodyJS, steps);
|
||||
console.log("Took " + (time[0] * 1e3 + time[1] / 1e6) + "ms");
|
||||
|
Reference in New Issue
Block a user