mirror of
https://github.com/fluencelabs/assemblyscript
synced 2025-04-25 07:02:13 +00:00
Fix a few issues with TSD generation; Update Binaryen
This commit is contained in:
parent
98a0aa863d
commit
e049e72171
2
dist/assemblyscript.js
vendored
2
dist/assemblyscript.js
vendored
File diff suppressed because one or more lines are too long
2
dist/assemblyscript.js.map
vendored
2
dist/assemblyscript.js.map
vendored
File diff suppressed because one or more lines are too long
15
examples/game-of-life/build/optimized.d.ts
vendored
Normal file
15
examples/game-of-life/build/optimized.d.ts
vendored
Normal file
@ -0,0 +1,15 @@
|
||||
declare module ASModule {
|
||||
type i8 = number;
|
||||
type i16 = number;
|
||||
type i32 = number;
|
||||
type u8 = number;
|
||||
type u16 = number;
|
||||
type u32 = number;
|
||||
type f32 = number;
|
||||
type f64 = number;
|
||||
type bool = any;
|
||||
function init(width: i32, height: i32): void;
|
||||
function step(): void;
|
||||
function fill(x: u32, y: u32, p: f64): void;
|
||||
}
|
||||
export default ASModule;
|
Binary file not shown.
@ -171,7 +171,7 @@
|
||||
(get_global $assembly/index/h)
|
||||
)
|
||||
(block
|
||||
(set_local $4
|
||||
(set_local $5
|
||||
;;@ assembly/index.ts:53:14
|
||||
(if (result i32)
|
||||
(get_local $0)
|
||||
@ -185,7 +185,7 @@
|
||||
(get_local $7)
|
||||
)
|
||||
)
|
||||
(set_local $5
|
||||
(set_local $6
|
||||
;;@ assembly/index.ts:54:14
|
||||
(if (result i32)
|
||||
(i32.eq
|
||||
@ -233,10 +233,10 @@
|
||||
(i32.shl
|
||||
(i32.add
|
||||
(i32.mul
|
||||
(get_local $4)
|
||||
(get_local $5)
|
||||
(get_global $assembly/index/w)
|
||||
)
|
||||
(tee_local $3
|
||||
(tee_local $2
|
||||
;;@ assembly/index.ts:56:16
|
||||
(if (result i32)
|
||||
(get_local $1)
|
||||
@ -263,7 +263,7 @@
|
||||
(i32.shl
|
||||
(i32.add
|
||||
(i32.mul
|
||||
(get_local $4)
|
||||
(get_local $5)
|
||||
(get_global $assembly/index/w)
|
||||
)
|
||||
(get_local $1)
|
||||
@ -281,10 +281,10 @@
|
||||
(i32.shl
|
||||
(i32.add
|
||||
(i32.mul
|
||||
(get_local $4)
|
||||
(get_local $5)
|
||||
(get_global $assembly/index/w)
|
||||
)
|
||||
(tee_local $2
|
||||
(tee_local $3
|
||||
;;@ assembly/index.ts:57:16
|
||||
(if (result i32)
|
||||
(i32.eq
|
||||
@ -319,7 +319,7 @@
|
||||
(get_local $0)
|
||||
(get_global $assembly/index/w)
|
||||
)
|
||||
(get_local $3)
|
||||
(get_local $2)
|
||||
)
|
||||
(i32.const 2)
|
||||
)
|
||||
@ -337,7 +337,7 @@
|
||||
(get_local $0)
|
||||
(get_global $assembly/index/w)
|
||||
)
|
||||
(get_local $2)
|
||||
(get_local $3)
|
||||
)
|
||||
(i32.const 2)
|
||||
)
|
||||
@ -352,10 +352,10 @@
|
||||
(i32.shl
|
||||
(i32.add
|
||||
(i32.mul
|
||||
(get_local $5)
|
||||
(get_local $6)
|
||||
(get_global $assembly/index/w)
|
||||
)
|
||||
(get_local $3)
|
||||
(get_local $2)
|
||||
)
|
||||
(i32.const 2)
|
||||
)
|
||||
@ -370,7 +370,7 @@
|
||||
(i32.shl
|
||||
(i32.add
|
||||
(i32.mul
|
||||
(get_local $5)
|
||||
(get_local $6)
|
||||
(get_global $assembly/index/w)
|
||||
)
|
||||
(get_local $1)
|
||||
@ -388,10 +388,10 @@
|
||||
(i32.shl
|
||||
(i32.add
|
||||
(i32.mul
|
||||
(get_local $5)
|
||||
(get_local $6)
|
||||
(get_global $assembly/index/w)
|
||||
)
|
||||
(get_local $2)
|
||||
(get_local $3)
|
||||
)
|
||||
(i32.const 2)
|
||||
)
|
||||
@ -406,7 +406,7 @@
|
||||
;;@ assembly/index.ts:68:10
|
||||
(i32.and
|
||||
;;@ assembly/index.ts:67:6
|
||||
(tee_local $3
|
||||
(tee_local $4
|
||||
;;@ assembly/index.ts:15:9
|
||||
(i32.load
|
||||
;;@ assembly/index.ts:15:19
|
||||
@ -429,7 +429,7 @@
|
||||
;;@ assembly/index.ts:68:17
|
||||
(i32.const 1)
|
||||
)
|
||||
;;@ assembly/index.ts:70:8
|
||||
;;@ assembly/index.ts:68:20
|
||||
(if
|
||||
;;@ assembly/index.ts:70:12
|
||||
(i32.eq
|
||||
@ -462,13 +462,15 @@
|
||||
(tee_local $2
|
||||
(i32.sub
|
||||
(i32.shr_u
|
||||
(get_local $3)
|
||||
(get_local $4)
|
||||
(i32.const 24)
|
||||
)
|
||||
(get_global $assembly/index/BIT_ROT)
|
||||
)
|
||||
)
|
||||
(i32.const 0)
|
||||
(tee_local $3
|
||||
(i32.const 0)
|
||||
)
|
||||
(i32.gt_s
|
||||
(get_local $2)
|
||||
(i32.const 0)
|
||||
@ -477,7 +479,7 @@
|
||||
(i32.const 24)
|
||||
)
|
||||
(i32.and
|
||||
(get_local $3)
|
||||
(get_local $4)
|
||||
(i32.const 16777215)
|
||||
)
|
||||
)
|
||||
@ -504,7 +506,7 @@
|
||||
)
|
||||
)
|
||||
)
|
||||
;;@ assembly/index.ts:75:8
|
||||
;;@ assembly/index.ts:73:13
|
||||
(if
|
||||
;;@ assembly/index.ts:75:12
|
||||
(i32.eq
|
||||
@ -564,7 +566,7 @@
|
||||
(i32.sub
|
||||
(i32.shr_u
|
||||
;;@ assembly/index.ts:27:20
|
||||
(get_local $3)
|
||||
(get_local $4)
|
||||
;;@ assembly/index.ts:27:26
|
||||
(i32.const 24)
|
||||
)
|
||||
@ -572,8 +574,10 @@
|
||||
(get_global $assembly/index/BIT_ROT)
|
||||
)
|
||||
)
|
||||
;;@ assembly/index.ts:27:41
|
||||
(i32.const 0)
|
||||
(tee_local $3
|
||||
;;@ assembly/index.ts:27:41
|
||||
(i32.const 0)
|
||||
)
|
||||
(i32.gt_s
|
||||
(get_local $2)
|
||||
(i32.const 0)
|
||||
@ -585,7 +589,7 @@
|
||||
;;@ assembly/index.ts:28:24
|
||||
(i32.and
|
||||
;;@ assembly/index.ts:28:25
|
||||
(get_local $3)
|
||||
(get_local $4)
|
||||
;;@ assembly/index.ts:28:29
|
||||
(i32.const 16777215)
|
||||
)
|
||||
@ -629,7 +633,7 @@
|
||||
(get_global $assembly/index/w)
|
||||
)
|
||||
(block
|
||||
;;@ assembly/index.ts:86:4
|
||||
;;@ assembly/index.ts:85:33
|
||||
(if
|
||||
;;@ assembly/index.ts:86:8
|
||||
(f64.lt
|
||||
@ -673,7 +677,7 @@
|
||||
)
|
||||
)
|
||||
;;@ assembly/index.ts:88:7
|
||||
(set_local $1
|
||||
(set_local $3
|
||||
;;@ assembly/index.ts:88:16
|
||||
(i32.const 0)
|
||||
)
|
||||
@ -681,12 +685,12 @@
|
||||
(if
|
||||
;;@ assembly/index.ts:88:19
|
||||
(i32.lt_s
|
||||
(get_local $1)
|
||||
(get_local $3)
|
||||
;;@ assembly/index.ts:88:24
|
||||
(get_global $assembly/index/h)
|
||||
)
|
||||
(block
|
||||
;;@ assembly/index.ts:89:4
|
||||
;;@ assembly/index.ts:88:33
|
||||
(if
|
||||
;;@ assembly/index.ts:89:8
|
||||
(f64.lt
|
||||
@ -705,7 +709,7 @@
|
||||
(get_global $assembly/index/s)
|
||||
;;@ assembly/index.ts:21:18
|
||||
(i32.mul
|
||||
(get_local $1)
|
||||
(get_local $3)
|
||||
;;@ assembly/index.ts:21:22
|
||||
(get_global $assembly/index/w)
|
||||
)
|
||||
@ -725,10 +729,10 @@
|
||||
)
|
||||
)
|
||||
;;@ assembly/index.ts:88:27
|
||||
(set_local $1
|
||||
(set_local $3
|
||||
(i32.add
|
||||
;;@ assembly/index.ts:88:29
|
||||
(get_local $1)
|
||||
(get_local $3)
|
||||
(i32.const 1)
|
||||
)
|
||||
)
|
||||
|
@ -1,7 +1,6 @@
|
||||
(module
|
||||
(type $iiv (func (param i32 i32)))
|
||||
(type $F (func (result f64)))
|
||||
(type $i (func (result i32)))
|
||||
(type $v (func))
|
||||
(type $iiFv (func (param i32 i32 f64)))
|
||||
(import "env" "BGR_ALIVE" (global $assembly/index/BGR_ALIVE i32))
|
||||
@ -12,7 +11,7 @@
|
||||
(global $assembly/index/w (mut i32) (i32.const 0))
|
||||
(global $assembly/index/h (mut i32) (i32.const 0))
|
||||
(global $assembly/index/s (mut i32) (i32.const 0))
|
||||
(global $HEAP_BASE i32 (i32.const 4))
|
||||
(global $HEAP_BASE i32 (i32.const 8))
|
||||
(export "init" (func $assembly/index/init))
|
||||
(export "step" (func $assembly/index/step))
|
||||
(export "fill" (func $assembly/index/fill))
|
||||
@ -56,83 +55,79 @@
|
||||
(get_global $assembly/index/h)
|
||||
)
|
||||
(block
|
||||
(block
|
||||
(block $break|1
|
||||
;;@ assembly/index.ts:39:9
|
||||
(set_local $3
|
||||
;;@ assembly/index.ts:39:17
|
||||
(i32.const 0)
|
||||
)
|
||||
(loop $continue|1
|
||||
(if
|
||||
;;@ assembly/index.ts:39:20
|
||||
(i32.lt_s
|
||||
(get_local $3)
|
||||
;;@ assembly/index.ts:39:24
|
||||
(get_global $assembly/index/w)
|
||||
)
|
||||
(block
|
||||
(block
|
||||
(block $assembly/index/set|inlined.0
|
||||
(set_local $4
|
||||
;;@ assembly/index.ts:40:16
|
||||
(if (result i32)
|
||||
(f64.gt
|
||||
;;@ assembly/index.ts:40:21
|
||||
(call $~lib/math/JSMath.random)
|
||||
;;@ assembly/index.ts:40:32
|
||||
(f64.const 0.1)
|
||||
)
|
||||
;;@ assembly/index.ts:40:38
|
||||
(i32.and
|
||||
(get_global $assembly/index/BGR_DEAD)
|
||||
;;@ assembly/index.ts:40:49
|
||||
(i32.const 16777215)
|
||||
)
|
||||
;;@ assembly/index.ts:40:62
|
||||
(i32.or
|
||||
(get_global $assembly/index/BGR_ALIVE)
|
||||
;;@ assembly/index.ts:40:74
|
||||
(i32.const -16777216)
|
||||
)
|
||||
)
|
||||
(block $break|1
|
||||
;;@ assembly/index.ts:39:9
|
||||
(set_local $3
|
||||
;;@ assembly/index.ts:39:17
|
||||
(i32.const 0)
|
||||
)
|
||||
(loop $continue|1
|
||||
(if
|
||||
;;@ assembly/index.ts:39:20
|
||||
(i32.lt_s
|
||||
(get_local $3)
|
||||
;;@ assembly/index.ts:39:24
|
||||
(get_global $assembly/index/w)
|
||||
)
|
||||
(block
|
||||
(block $assembly/index/set|inlined.0
|
||||
(set_local $4
|
||||
;;@ assembly/index.ts:40:16
|
||||
(if (result i32)
|
||||
(f64.gt
|
||||
;;@ assembly/index.ts:40:21
|
||||
(call $~lib/math/JSMath.random)
|
||||
;;@ assembly/index.ts:40:32
|
||||
(f64.const 0.1)
|
||||
)
|
||||
;;@ assembly/index.ts:21:2
|
||||
(i32.store
|
||||
;;@ assembly/index.ts:21:13
|
||||
(i32.shl
|
||||
(i32.add
|
||||
;;@ assembly/index.ts:21:14
|
||||
(i32.add
|
||||
(get_global $assembly/index/s)
|
||||
;;@ assembly/index.ts:21:18
|
||||
(i32.mul
|
||||
(get_local $2)
|
||||
;;@ assembly/index.ts:21:22
|
||||
(get_global $assembly/index/w)
|
||||
)
|
||||
)
|
||||
;;@ assembly/index.ts:21:26
|
||||
(get_local $3)
|
||||
)
|
||||
;;@ assembly/index.ts:21:32
|
||||
(i32.const 2)
|
||||
)
|
||||
;;@ assembly/index.ts:21:35
|
||||
(get_local $4)
|
||||
;;@ assembly/index.ts:40:38
|
||||
(i32.and
|
||||
(get_global $assembly/index/BGR_DEAD)
|
||||
;;@ assembly/index.ts:40:49
|
||||
(i32.const 16777215)
|
||||
)
|
||||
;;@ assembly/index.ts:40:62
|
||||
(i32.or
|
||||
(get_global $assembly/index/BGR_ALIVE)
|
||||
;;@ assembly/index.ts:40:74
|
||||
(i32.const -16777216)
|
||||
)
|
||||
)
|
||||
)
|
||||
;;@ assembly/index.ts:39:27
|
||||
(set_local $3
|
||||
(i32.add
|
||||
;;@ assembly/index.ts:39:29
|
||||
(get_local $3)
|
||||
(i32.const 1)
|
||||
;;@ assembly/index.ts:21:2
|
||||
(i32.store
|
||||
;;@ assembly/index.ts:21:13
|
||||
(i32.shl
|
||||
(i32.add
|
||||
;;@ assembly/index.ts:21:14
|
||||
(i32.add
|
||||
(get_global $assembly/index/s)
|
||||
;;@ assembly/index.ts:21:18
|
||||
(i32.mul
|
||||
(get_local $2)
|
||||
;;@ assembly/index.ts:21:22
|
||||
(get_global $assembly/index/w)
|
||||
)
|
||||
)
|
||||
;;@ assembly/index.ts:21:26
|
||||
(get_local $3)
|
||||
)
|
||||
;;@ assembly/index.ts:21:32
|
||||
(i32.const 2)
|
||||
)
|
||||
;;@ assembly/index.ts:21:35
|
||||
(get_local $4)
|
||||
)
|
||||
(br $continue|1)
|
||||
)
|
||||
;;@ assembly/index.ts:39:27
|
||||
(set_local $3
|
||||
(i32.add
|
||||
;;@ assembly/index.ts:39:29
|
||||
(get_local $3)
|
||||
(i32.const 1)
|
||||
)
|
||||
)
|
||||
(br $continue|1)
|
||||
)
|
||||
)
|
||||
)
|
||||
@ -164,10 +159,6 @@
|
||||
(local $9 i32)
|
||||
(local $10 i32)
|
||||
(local $11 i32)
|
||||
(local $12 i32)
|
||||
(local $13 i32)
|
||||
(local $14 i32)
|
||||
(local $15 i32)
|
||||
;;@ assembly/index.ts:47:2
|
||||
(block
|
||||
(set_local $0
|
||||
@ -526,7 +517,7 @@
|
||||
;;@ assembly/index.ts:68:17
|
||||
(i32.const 1)
|
||||
)
|
||||
;;@ assembly/index.ts:70:8
|
||||
;;@ assembly/index.ts:68:20
|
||||
(if
|
||||
;;@ assembly/index.ts:70:12
|
||||
(i32.eq
|
||||
@ -594,7 +585,7 @@
|
||||
)
|
||||
;;@ assembly/index.ts:72:13
|
||||
(block $assembly/index/set|inlined.2
|
||||
(set_local $12
|
||||
(set_local $10
|
||||
;;@ assembly/index.ts:72:23
|
||||
(i32.or
|
||||
(get_global $assembly/index/BGR_DEAD)
|
||||
@ -616,11 +607,11 @@
|
||||
)
|
||||
(i32.const 2)
|
||||
)
|
||||
(get_local $12)
|
||||
(get_local $10)
|
||||
)
|
||||
)
|
||||
)
|
||||
;;@ assembly/index.ts:75:8
|
||||
;;@ assembly/index.ts:73:13
|
||||
(if
|
||||
;;@ assembly/index.ts:75:12
|
||||
(i32.eq
|
||||
@ -630,7 +621,7 @@
|
||||
)
|
||||
;;@ assembly/index.ts:75:33
|
||||
(block $assembly/index/set|inlined.3
|
||||
(set_local $13
|
||||
(set_local $10
|
||||
;;@ assembly/index.ts:75:43
|
||||
(i32.or
|
||||
(get_global $assembly/index/BGR_ALIVE)
|
||||
@ -652,16 +643,16 @@
|
||||
)
|
||||
(i32.const 2)
|
||||
)
|
||||
(get_local $13)
|
||||
(get_local $10)
|
||||
)
|
||||
)
|
||||
;;@ assembly/index.ts:77:13
|
||||
(block $assembly/index/rot|inlined.1
|
||||
;;@ assembly/index.ts:27:2
|
||||
(set_local $14
|
||||
(set_local $10
|
||||
;;@ assembly/index.ts:27:10
|
||||
(select
|
||||
(tee_local $14
|
||||
(tee_local $10
|
||||
;;@ assembly/index.ts:27:19
|
||||
(i32.sub
|
||||
(i32.shr_u
|
||||
@ -674,24 +665,24 @@
|
||||
(get_global $assembly/index/BIT_ROT)
|
||||
)
|
||||
)
|
||||
(tee_local $15
|
||||
(tee_local $11
|
||||
;;@ assembly/index.ts:27:41
|
||||
(i32.const 0)
|
||||
)
|
||||
(i32.gt_s
|
||||
(get_local $14)
|
||||
(get_local $15)
|
||||
(get_local $10)
|
||||
(get_local $11)
|
||||
)
|
||||
)
|
||||
)
|
||||
;;@ assembly/index.ts:28:2
|
||||
(block $assembly/index/set|inlined.4
|
||||
(set_local $15
|
||||
(set_local $11
|
||||
;;@ assembly/index.ts:28:12
|
||||
(i32.or
|
||||
(i32.shl
|
||||
;;@ assembly/index.ts:28:13
|
||||
(get_local $14)
|
||||
(get_local $10)
|
||||
;;@ assembly/index.ts:28:18
|
||||
(i32.const 24)
|
||||
)
|
||||
@ -726,7 +717,7 @@
|
||||
(i32.const 2)
|
||||
)
|
||||
;;@ assembly/index.ts:21:35
|
||||
(get_local $15)
|
||||
(get_local $11)
|
||||
)
|
||||
)
|
||||
)
|
||||
@ -764,8 +755,6 @@
|
||||
(func $assembly/index/fill (; 3 ;) (type $iiFv) (param $0 i32) (param $1 i32) (param $2 f64)
|
||||
(local $3 i32)
|
||||
(local $4 i32)
|
||||
(local $5 i32)
|
||||
(local $6 i32)
|
||||
;;@ assembly/index.ts:85:2
|
||||
(block $break|0
|
||||
;;@ assembly/index.ts:85:7
|
||||
@ -782,42 +771,40 @@
|
||||
(get_global $assembly/index/w)
|
||||
)
|
||||
(block
|
||||
(block
|
||||
;;@ assembly/index.ts:86:4
|
||||
(if
|
||||
;;@ assembly/index.ts:86:8
|
||||
(f64.lt
|
||||
;;@ assembly/index.ts:86:13
|
||||
(call $~lib/math/JSMath.random)
|
||||
;;@ assembly/index.ts:86:24
|
||||
(get_local $2)
|
||||
;;@ assembly/index.ts:85:33
|
||||
(if
|
||||
;;@ assembly/index.ts:86:8
|
||||
(f64.lt
|
||||
;;@ assembly/index.ts:86:13
|
||||
(call $~lib/math/JSMath.random)
|
||||
;;@ assembly/index.ts:86:24
|
||||
(get_local $2)
|
||||
)
|
||||
;;@ assembly/index.ts:86:27
|
||||
(block $assembly/index/set|inlined.5
|
||||
(set_local $4
|
||||
;;@ assembly/index.ts:86:38
|
||||
(i32.or
|
||||
(get_global $assembly/index/BGR_ALIVE)
|
||||
;;@ assembly/index.ts:86:50
|
||||
(i32.const -16777216)
|
||||
)
|
||||
)
|
||||
;;@ assembly/index.ts:86:27
|
||||
(block $assembly/index/set|inlined.5
|
||||
(set_local $4
|
||||
;;@ assembly/index.ts:86:38
|
||||
(i32.or
|
||||
(get_global $assembly/index/BGR_ALIVE)
|
||||
;;@ assembly/index.ts:86:50
|
||||
(i32.const -16777216)
|
||||
)
|
||||
)
|
||||
(i32.store
|
||||
(i32.shl
|
||||
(i32.store
|
||||
(i32.shl
|
||||
(i32.add
|
||||
(i32.add
|
||||
(i32.add
|
||||
(get_global $assembly/index/s)
|
||||
(i32.mul
|
||||
(get_local $1)
|
||||
(get_global $assembly/index/w)
|
||||
)
|
||||
(get_global $assembly/index/s)
|
||||
(i32.mul
|
||||
(get_local $1)
|
||||
(get_global $assembly/index/w)
|
||||
)
|
||||
(get_local $3)
|
||||
)
|
||||
(i32.const 2)
|
||||
(get_local $3)
|
||||
)
|
||||
(get_local $4)
|
||||
(i32.const 2)
|
||||
)
|
||||
(get_local $4)
|
||||
)
|
||||
)
|
||||
)
|
||||
@ -837,7 +824,7 @@
|
||||
;;@ assembly/index.ts:88:2
|
||||
(block $break|1
|
||||
;;@ assembly/index.ts:88:7
|
||||
(set_local $5
|
||||
(set_local $3
|
||||
;;@ assembly/index.ts:88:16
|
||||
(i32.const 0)
|
||||
)
|
||||
@ -845,63 +832,61 @@
|
||||
(if
|
||||
;;@ assembly/index.ts:88:19
|
||||
(i32.lt_s
|
||||
(get_local $5)
|
||||
(get_local $3)
|
||||
;;@ assembly/index.ts:88:24
|
||||
(get_global $assembly/index/h)
|
||||
)
|
||||
(block
|
||||
(block
|
||||
;;@ assembly/index.ts:89:4
|
||||
(if
|
||||
;;@ assembly/index.ts:89:8
|
||||
(f64.lt
|
||||
;;@ assembly/index.ts:89:13
|
||||
(call $~lib/math/JSMath.random)
|
||||
;;@ assembly/index.ts:89:24
|
||||
(get_local $2)
|
||||
;;@ assembly/index.ts:88:33
|
||||
(if
|
||||
;;@ assembly/index.ts:89:8
|
||||
(f64.lt
|
||||
;;@ assembly/index.ts:89:13
|
||||
(call $~lib/math/JSMath.random)
|
||||
;;@ assembly/index.ts:89:24
|
||||
(get_local $2)
|
||||
)
|
||||
;;@ assembly/index.ts:89:27
|
||||
(block $assembly/index/set|inlined.6
|
||||
(set_local $4
|
||||
;;@ assembly/index.ts:89:38
|
||||
(i32.or
|
||||
(get_global $assembly/index/BGR_ALIVE)
|
||||
;;@ assembly/index.ts:89:50
|
||||
(i32.const -16777216)
|
||||
)
|
||||
)
|
||||
;;@ assembly/index.ts:89:27
|
||||
(block $assembly/index/set|inlined.6
|
||||
(set_local $6
|
||||
;;@ assembly/index.ts:89:38
|
||||
(i32.or
|
||||
(get_global $assembly/index/BGR_ALIVE)
|
||||
;;@ assembly/index.ts:89:50
|
||||
(i32.const -16777216)
|
||||
)
|
||||
)
|
||||
;;@ assembly/index.ts:21:2
|
||||
(i32.store
|
||||
;;@ assembly/index.ts:21:13
|
||||
(i32.shl
|
||||
;;@ assembly/index.ts:21:2
|
||||
(i32.store
|
||||
;;@ assembly/index.ts:21:13
|
||||
(i32.shl
|
||||
(i32.add
|
||||
;;@ assembly/index.ts:21:14
|
||||
(i32.add
|
||||
;;@ assembly/index.ts:21:14
|
||||
(i32.add
|
||||
(get_global $assembly/index/s)
|
||||
;;@ assembly/index.ts:21:18
|
||||
(i32.mul
|
||||
(get_local $5)
|
||||
;;@ assembly/index.ts:21:22
|
||||
(get_global $assembly/index/w)
|
||||
)
|
||||
(get_global $assembly/index/s)
|
||||
;;@ assembly/index.ts:21:18
|
||||
(i32.mul
|
||||
(get_local $3)
|
||||
;;@ assembly/index.ts:21:22
|
||||
(get_global $assembly/index/w)
|
||||
)
|
||||
;;@ assembly/index.ts:21:26
|
||||
(get_local $0)
|
||||
)
|
||||
;;@ assembly/index.ts:21:32
|
||||
(i32.const 2)
|
||||
;;@ assembly/index.ts:21:26
|
||||
(get_local $0)
|
||||
)
|
||||
;;@ assembly/index.ts:21:35
|
||||
(get_local $6)
|
||||
;;@ assembly/index.ts:21:32
|
||||
(i32.const 2)
|
||||
)
|
||||
;;@ assembly/index.ts:21:35
|
||||
(get_local $4)
|
||||
)
|
||||
)
|
||||
)
|
||||
;;@ assembly/index.ts:88:27
|
||||
(set_local $5
|
||||
(set_local $3
|
||||
(i32.add
|
||||
;;@ assembly/index.ts:88:29
|
||||
(get_local $5)
|
||||
(get_local $3)
|
||||
(i32.const 1)
|
||||
)
|
||||
)
|
||||
|
@ -4,7 +4,7 @@
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"asbuild:untouched": "asc assembly/index.ts -b build/untouched.wasm -t build/untouched.wat --use Math=JSMath --importMemory --sourceMap --validate --measure",
|
||||
"asbuild:optimized": "asc assembly/index.ts -b build/optimized.wasm -t build/optimized.wat --use Math=JSMath -O3 --importMemory --sourceMap --validate --noDebug --measure",
|
||||
"asbuild:optimized": "asc assembly/index.ts -b build/optimized.wasm -t build/optimized.wat -d build/optimized.d.ts --use Math=JSMath -O3 --importMemory --sourceMap --validate --noDebug --measure",
|
||||
"asbuild": "npm run asbuild:untouched && npm run asbuild:optimized",
|
||||
"server": "http-server . -o -c-1"
|
||||
},
|
||||
|
43
examples/i64-polyfill/build/optimized.d.ts
vendored
Normal file
43
examples/i64-polyfill/build/optimized.d.ts
vendored
Normal file
@ -0,0 +1,43 @@
|
||||
declare module ASModule {
|
||||
type i8 = number;
|
||||
type i16 = number;
|
||||
type i32 = number;
|
||||
type u8 = number;
|
||||
type u16 = number;
|
||||
type u32 = number;
|
||||
type f32 = number;
|
||||
type f64 = number;
|
||||
type bool = any;
|
||||
function getLo(): u32;
|
||||
function getHi(): u32;
|
||||
function clz(loLeft: u32, hiLeft: u32): void;
|
||||
function ctz(loLeft: u32, hiLeft: u32): void;
|
||||
function popcnt(loLeft: u32, hiLeft: u32): void;
|
||||
function eqz(loLeft: u32, hiLeft: u32): void;
|
||||
function add(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void;
|
||||
function sub(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void;
|
||||
function mul(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void;
|
||||
function div_s(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void;
|
||||
function div_u(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void;
|
||||
function rem_s(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void;
|
||||
function rem_u(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void;
|
||||
function and(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void;
|
||||
function or(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void;
|
||||
function xor(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void;
|
||||
function shl(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void;
|
||||
function shr_s(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void;
|
||||
function shr_u(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void;
|
||||
function rotl(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void;
|
||||
function rotr(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void;
|
||||
function eq(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void;
|
||||
function ne(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void;
|
||||
function lt_s(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void;
|
||||
function lt_u(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void;
|
||||
function le_s(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void;
|
||||
function le_u(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void;
|
||||
function gt_s(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void;
|
||||
function gt_u(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void;
|
||||
function ge_s(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void;
|
||||
function ge_u(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void;
|
||||
}
|
||||
export default ASModule;
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -18,7 +18,7 @@
|
||||
"scripts": {
|
||||
"asbuild": "npm run asbuild:untouched && npm run asbuild:optimized",
|
||||
"asbuild:untouched": "asc assembly/i64.ts -t build/untouched.wat -b build/untouched.wasm --noMemory --validate --sourceMap --measure",
|
||||
"asbuild:optimized": "asc -O assembly/i64.ts -b build/optimized.wasm -t build/optimized.wat --noMemory --validate --sourceMap --measure",
|
||||
"asbuild:optimized": "asc -O assembly/i64.ts -b build/optimized.wasm -t build/optimized.wat -d build/optimized.d.ts --noMemory --validate --sourceMap --measure",
|
||||
"test": "node tests"
|
||||
},
|
||||
"files": [
|
||||
|
13
examples/mandelbrot/build/optimized.d.ts
vendored
Normal file
13
examples/mandelbrot/build/optimized.d.ts
vendored
Normal file
@ -0,0 +1,13 @@
|
||||
declare module ASModule {
|
||||
type i8 = number;
|
||||
type i16 = number;
|
||||
type i32 = number;
|
||||
type u8 = number;
|
||||
type u16 = number;
|
||||
type u32 = number;
|
||||
type f32 = number;
|
||||
type f64 = number;
|
||||
type bool = any;
|
||||
function computeLine(y: u32, width: u32, height: u32, limit: u32): void;
|
||||
}
|
||||
export default ASModule;
|
Binary file not shown.
@ -124,7 +124,7 @@
|
||||
;;@ assembly/index.ts:18:11
|
||||
(f64.le
|
||||
(f64.add
|
||||
(tee_local $8
|
||||
(tee_local $7
|
||||
;;@ assembly/index.ts:18:19
|
||||
(f64.mul
|
||||
(get_local $4)
|
||||
@ -133,7 +133,7 @@
|
||||
)
|
||||
)
|
||||
;;@ assembly/index.ts:18:30
|
||||
(tee_local $7
|
||||
(tee_local $8
|
||||
;;@ assembly/index.ts:18:38
|
||||
(f64.mul
|
||||
(get_local $5)
|
||||
@ -168,9 +168,9 @@
|
||||
;;@ assembly/index.ts:19:18
|
||||
(f64.add
|
||||
(f64.sub
|
||||
(get_local $8)
|
||||
;;@ assembly/index.ts:19:25
|
||||
(get_local $7)
|
||||
;;@ assembly/index.ts:19:25
|
||||
(get_local $8)
|
||||
)
|
||||
;;@ assembly/index.ts:19:32
|
||||
(get_local $10)
|
||||
@ -199,7 +199,7 @@
|
||||
)
|
||||
)
|
||||
;;@ assembly/index.ts:27:9
|
||||
(set_local $8
|
||||
(set_local $7
|
||||
;;@ assembly/index.ts:27:29
|
||||
(f64.min
|
||||
;;@ assembly/index.ts:27:33
|
||||
@ -218,11 +218,11 @@
|
||||
(get_local $6)
|
||||
)
|
||||
;;@ assembly/index.ts:27:56
|
||||
(get_local $8)
|
||||
(get_local $7)
|
||||
)
|
||||
(block
|
||||
;;@ assembly/index.ts:28:6
|
||||
(set_local $7
|
||||
(set_local $8
|
||||
;;@ assembly/index.ts:28:18
|
||||
(f64.add
|
||||
(f64.sub
|
||||
@ -262,7 +262,7 @@
|
||||
;;@ assembly/index.ts:30:6
|
||||
(set_local $4
|
||||
;;@ assembly/index.ts:30:11
|
||||
(get_local $7)
|
||||
(get_local $8)
|
||||
)
|
||||
;;@ assembly/index.ts:27:71
|
||||
(set_local $6
|
||||
@ -297,7 +297,7 @@
|
||||
(if (result i32)
|
||||
(f64.eq
|
||||
(f64.sub
|
||||
(tee_local $4
|
||||
(tee_local $8
|
||||
;;@ assembly/index.ts:36:4
|
||||
(tee_local $7
|
||||
;;@ assembly/index.ts:36:15
|
||||
@ -330,7 +330,7 @@
|
||||
)
|
||||
)
|
||||
)
|
||||
(get_local $4)
|
||||
(get_local $8)
|
||||
)
|
||||
(f64.const 0)
|
||||
)
|
||||
|
@ -1,6 +1,5 @@
|
||||
(module
|
||||
(type $iiiiv (func (param i32 i32 i32 i32)))
|
||||
(type $i (func (result i32)))
|
||||
(type $FF (func (param f64) (result f64)))
|
||||
(type $Fi (func (param f64) (result i32)))
|
||||
(type $FFFF (func (param f64 f64 f64) (result f64)))
|
||||
@ -9,11 +8,11 @@
|
||||
(import "JSMath" "LN2" (global $~lib/math/JSMath.LN2 f64))
|
||||
(import "env" "memory" (memory $0 1))
|
||||
(global $assembly/index/NUM_COLORS i32 (i32.const 2048))
|
||||
(global $HEAP_BASE i32 (i32.const 4))
|
||||
(global $HEAP_BASE i32 (i32.const 8))
|
||||
(export "computeLine" (func $assembly/index/computeLine))
|
||||
(export "memory" (memory $0))
|
||||
(func $isFinite<f64> (; 2 ;) (type $Fi) (param $0 f64) (result i32)
|
||||
;;@ ~lib/builtins.ts:22:26
|
||||
;;@ ~lib/builtins.ts:21:44
|
||||
(return
|
||||
;;@ ~lib/builtins.ts:22:9
|
||||
(f64.eq
|
||||
@ -28,7 +27,7 @@
|
||||
)
|
||||
)
|
||||
(func $assembly/index/clamp<f64> (; 3 ;) (type $FFFF) (param $0 f64) (param $1 f64) (param $2 f64) (result f64)
|
||||
;;@ assembly/index.ts:47:43
|
||||
;;@ assembly/index.ts:46:57
|
||||
(return
|
||||
;;@ assembly/index.ts:47:9
|
||||
(f64.min
|
||||
@ -58,9 +57,7 @@
|
||||
(local $14 i32)
|
||||
(local $15 f64)
|
||||
(local $16 f64)
|
||||
(local $17 f64)
|
||||
(local $18 f64)
|
||||
(local $19 i32)
|
||||
(local $17 i32)
|
||||
;;@ assembly/index.ts:8:2
|
||||
(set_local $4
|
||||
;;@ assembly/index.ts:8:19
|
||||
@ -267,7 +264,7 @@
|
||||
;;@ assembly/index.ts:27:4
|
||||
(block $break|2
|
||||
;;@ assembly/index.ts:27:9
|
||||
(set_local $16
|
||||
(set_local $15
|
||||
;;@ assembly/index.ts:27:29
|
||||
(f64.min
|
||||
;;@ assembly/index.ts:27:33
|
||||
@ -286,12 +283,12 @@
|
||||
(get_local $14)
|
||||
)
|
||||
;;@ assembly/index.ts:27:56
|
||||
(get_local $16)
|
||||
(get_local $15)
|
||||
)
|
||||
(block
|
||||
(block
|
||||
;;@ assembly/index.ts:28:6
|
||||
(set_local $17
|
||||
(set_local $16
|
||||
;;@ assembly/index.ts:28:18
|
||||
(f64.add
|
||||
(f64.sub
|
||||
@ -331,7 +328,7 @@
|
||||
;;@ assembly/index.ts:30:6
|
||||
(set_local $10
|
||||
;;@ assembly/index.ts:30:11
|
||||
(get_local $17)
|
||||
(get_local $16)
|
||||
)
|
||||
)
|
||||
;;@ assembly/index.ts:27:71
|
||||
@ -348,7 +345,7 @@
|
||||
)
|
||||
)
|
||||
;;@ assembly/index.ts:36:4
|
||||
(set_local $18
|
||||
(set_local $15
|
||||
;;@ assembly/index.ts:36:15
|
||||
(f64.div
|
||||
;;@ assembly/index.ts:36:20
|
||||
@ -379,12 +376,12 @@
|
||||
)
|
||||
)
|
||||
;;@ assembly/index.ts:37:4
|
||||
(set_local $19
|
||||
(set_local $17
|
||||
;;@ assembly/index.ts:37:15
|
||||
(if (result i32)
|
||||
(call $isFinite<f64>
|
||||
;;@ assembly/index.ts:37:24
|
||||
(get_local $18)
|
||||
(get_local $15)
|
||||
)
|
||||
;;@ assembly/index.ts:38:8
|
||||
(i32.trunc_u/f64
|
||||
@ -412,7 +409,7 @@
|
||||
)
|
||||
)
|
||||
;;@ assembly/index.ts:38:56
|
||||
(get_local $18)
|
||||
(get_local $15)
|
||||
)
|
||||
(f64.convert_u/i32
|
||||
;;@ assembly/index.ts:38:64
|
||||
@ -452,7 +449,7 @@
|
||||
(i32.const 1)
|
||||
)
|
||||
;;@ assembly/index.ts:40:37
|
||||
(get_local $19)
|
||||
(get_local $17)
|
||||
)
|
||||
)
|
||||
;;@ assembly/index.ts:12:34
|
||||
|
@ -4,7 +4,7 @@
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"asbuild:untouched": "asc assembly/index.ts -b build/untouched.wasm -t build/untouched.wat --use Math=JSMath --importMemory --sourceMap --validate --measure",
|
||||
"asbuild:optimized": "asc assembly/index.ts -b build/optimized.wasm -t build/optimized.wat --use Math=JSMath -O3 --importMemory --sourceMap --validate --noDebug --measure",
|
||||
"asbuild:optimized": "asc assembly/index.ts -b build/optimized.wasm -t build/optimized.wat -d build/optimized.d.ts --use Math=JSMath -O3 --importMemory --sourceMap --validate --noDebug --measure",
|
||||
"asbuild": "npm run asbuild:untouched && npm run asbuild:optimized",
|
||||
"server": "http-server . -o -c-1"
|
||||
},
|
||||
|
@ -14,26 +14,28 @@ function asmFunc(global, env, buffer) {
|
||||
var Math_clz32 = global.Math.clz32;
|
||||
var Math_min = global.Math.min;
|
||||
var Math_max = global.Math.max;
|
||||
var Math_floor = global.Math.floor;
|
||||
var Math_ceil = global.Math.ceil;
|
||||
var Math_sqrt = global.Math.sqrt;
|
||||
var abort = env.abort;
|
||||
var $lib_allocator_arena_startOffset = 0;
|
||||
var $lib_allocator_arena_offset = 0;
|
||||
var assembly_index_system = 0;
|
||||
var HEAP_BASE = 36;
|
||||
var HEAP_BASE = 40;
|
||||
var i64toi32_i32$HIGH_BITS = 0;
|
||||
function $lib_allocator_arena_allocate_memory($0) {
|
||||
$0 = $0 | 0;
|
||||
var $1 = 0, $2 = 0, $3 = 0, $4 = 0, wasm2asm_i32$0 = 0, wasm2asm_i32$1 = 0, wasm2asm_i32$2 = 0;
|
||||
var $3 = 0, $1 = 0, $2 = 0, wasm2asm_i32$0 = 0, wasm2asm_i32$1 = 0, wasm2asm_i32$2 = 0;
|
||||
if ($0) {
|
||||
if ($0 >>> 0 > 1073741824 >>> 0) abort();
|
||||
$1 = $lib_allocator_arena_offset;
|
||||
$2 = (($1 + $0 | 0) + 7 | 0) & 4294967288 | 0;
|
||||
$0 = __wasm_current_memory();
|
||||
if ($2 >>> 0 > ($0 << 16 | 0) >>> 0) {
|
||||
$3 = ((($2 - $1 | 0) + 65535 | 0) & 4294901760 | 0) >>> 16 | 0;
|
||||
$4 = $3;
|
||||
if ((__wasm_grow_memory((wasm2asm_i32$2 = ($0 | 0) > ($4 | 0), wasm2asm_i32$0 = $0, wasm2asm_i32$1 = $4, wasm2asm_i32$2 ? wasm2asm_i32$0 : wasm2asm_i32$1) | 0) | 0) < (0 | 0)) if ((__wasm_grow_memory($3 | 0) | 0) < (0 | 0)) abort();;
|
||||
$0 = (($1 + $0 | 0) + 7 | 0) & 4294967288 | 0;
|
||||
$2 = __wasm_current_memory();
|
||||
if ($0 >>> 0 > ($2 << 16 | 0) >>> 0) {
|
||||
$3 = ((($0 - $1 | 0) + 65535 | 0) & 4294901760 | 0) >>> 16 | 0;
|
||||
if ((__wasm_grow_memory((wasm2asm_i32$2 = ($2 | 0) > ($3 | 0), wasm2asm_i32$0 = $2, wasm2asm_i32$1 = $3, wasm2asm_i32$2 ? wasm2asm_i32$0 : wasm2asm_i32$1) | 0) | 0) < (0 | 0)) if ((__wasm_grow_memory($3 | 0) | 0) < (0 | 0)) abort();;
|
||||
}
|
||||
$lib_allocator_arena_offset = $2;
|
||||
$lib_allocator_arena_offset = $0;
|
||||
return $1 | 0;
|
||||
}
|
||||
return 0 | 0;
|
||||
@ -48,8 +50,8 @@ function asmFunc(global, env, buffer) {
|
||||
$5 = +$5;
|
||||
$6 = +$6;
|
||||
$7 = +$7;
|
||||
var $8 = 0, $9 = 0;
|
||||
if ($0) $9 = $0; else {
|
||||
var $8 = 0, $29 = 0;
|
||||
if ($0) $29 = $0; else {
|
||||
$8 = $lib_allocator_arena_allocate_memory(56 | 0) | 0;
|
||||
HEAPF64[$8 >> 3] = $1;
|
||||
HEAPF64[($8 + 8 | 0) >> 3] = $2;
|
||||
@ -58,16 +60,16 @@ function asmFunc(global, env, buffer) {
|
||||
HEAPF64[($8 + 32 | 0) >> 3] = $5;
|
||||
HEAPF64[($8 + 40 | 0) >> 3] = $6;
|
||||
HEAPF64[($8 + 48 | 0) >> 3] = $7;
|
||||
$9 = $8;
|
||||
$29 = $8;
|
||||
}
|
||||
return $9 | 0;
|
||||
return $29 | 0;
|
||||
}
|
||||
|
||||
function $lib_memory_set_memory($0, $1, $2) {
|
||||
$0 = $0 | 0;
|
||||
$1 = $1 | 0;
|
||||
$2 = $2 | 0;
|
||||
var i64toi32_i32$3 = 0, i64toi32_i32$2 = 0, $4 = 0, i64toi32_i32$5 = 0, $3 = 0, $3$hi = 0, i64toi32_i32$1 = 0, i64toi32_i32$4 = 0, $11 = 0, i64toi32_i32$0 = 0, wasm2asm_i32$0 = 0, wasm2asm_i32$1 = 0;
|
||||
var i64toi32_i32$2 = 0, i64toi32_i32$0 = 0, $4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$4 = 0, i64toi32_i32$3 = 0, $3 = 0, $14 = 0, $126 = 0, $126$hi = 0, $129$hi = 0, $3$hi = 0, wasm2asm_i32$0 = 0, wasm2asm_i32$1 = 0;
|
||||
if (($2 | 0) == (0 | 0)) return;
|
||||
HEAP8[$0 >> 0] = $1;
|
||||
HEAP8[(($0 + $2 | 0) - 1 | 0) >> 0] = $1;
|
||||
@ -104,41 +106,52 @@ function asmFunc(global, env, buffer) {
|
||||
$0 = $0 + $4 | 0;
|
||||
$2 = $2 - $4 | 0;
|
||||
i64toi32_i32$0 = 0;
|
||||
i64toi32_i32$3 = $1;
|
||||
$126 = $1;
|
||||
$126$hi = i64toi32_i32$0;
|
||||
i64toi32_i32$0 = 0;
|
||||
i64toi32_i32$0 = i64toi32_i32$0;
|
||||
i64toi32_i32$2 = $1;
|
||||
i64toi32_i32$1 = 0;
|
||||
i64toi32_i32$3 = $1;
|
||||
i64toi32_i32$2 = 0;
|
||||
i64toi32_i32$4 = 32;
|
||||
i64toi32_i32$5 = i64toi32_i32$4 & 31 | 0;
|
||||
if (32 >>> 0 <= (i64toi32_i32$4 & 63 | 0) >>> 0) {
|
||||
i64toi32_i32$2 = i64toi32_i32$3 << i64toi32_i32$5 | 0;
|
||||
$11 = 0;
|
||||
i64toi32_i32$3 = 32;
|
||||
i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0;
|
||||
if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) {
|
||||
i64toi32_i32$1 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
|
||||
$14 = 0;
|
||||
} else {
|
||||
i64toi32_i32$2 = ((1 << i64toi32_i32$5 | 0) - 1 | 0) & (i64toi32_i32$3 >>> (32 - i64toi32_i32$5 | 0) | 0) | 0 | (i64toi32_i32$1 << i64toi32_i32$5 | 0) | 0;
|
||||
$11 = i64toi32_i32$3 << i64toi32_i32$5 | 0;
|
||||
i64toi32_i32$1 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$2 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$0 << i64toi32_i32$4 | 0) | 0;
|
||||
$14 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
|
||||
}
|
||||
i64toi32_i32$1 = $11;
|
||||
i64toi32_i32$2 = i64toi32_i32$0 | i64toi32_i32$2 | 0;
|
||||
$3 = i64toi32_i32$3 | i64toi32_i32$1 | 0;
|
||||
$129$hi = i64toi32_i32$1;
|
||||
i64toi32_i32$1 = $126$hi;
|
||||
i64toi32_i32$0 = $126;
|
||||
i64toi32_i32$2 = $129$hi;
|
||||
i64toi32_i32$3 = $14;
|
||||
i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
|
||||
i64toi32_i32$2 = i64toi32_i32$2;
|
||||
$3 = i64toi32_i32$0 | i64toi32_i32$3 | 0;
|
||||
$3$hi = i64toi32_i32$2;
|
||||
continue_0 : do {
|
||||
if ($2 >>> 0 >= 32 >>> 0) {
|
||||
i64toi32_i32$3 = $0;
|
||||
i64toi32_i32$2 = $3$hi;
|
||||
HEAP32[i64toi32_i32$3 >> 2] = $3;
|
||||
(wasm2asm_i32$0 = i64toi32_i32$3, wasm2asm_i32$1 = i64toi32_i32$2), ((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;
|
||||
i64toi32_i32$3 = $0 + 8 | 0;
|
||||
i64toi32_i32$2 = $3$hi;
|
||||
HEAP32[i64toi32_i32$3 >> 2] = $3;
|
||||
(wasm2asm_i32$0 = i64toi32_i32$3, wasm2asm_i32$1 = i64toi32_i32$2), ((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;
|
||||
i64toi32_i32$3 = $0 + 16 | 0;
|
||||
i64toi32_i32$2 = $3$hi;
|
||||
HEAP32[i64toi32_i32$3 >> 2] = $3;
|
||||
(wasm2asm_i32$0 = i64toi32_i32$3, wasm2asm_i32$1 = i64toi32_i32$2), ((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;
|
||||
i64toi32_i32$3 = $0 + 24 | 0;
|
||||
i64toi32_i32$2 = $3$hi;
|
||||
HEAP32[i64toi32_i32$3 >> 2] = $3;
|
||||
(wasm2asm_i32$0 = i64toi32_i32$3, wasm2asm_i32$1 = i64toi32_i32$2), ((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;
|
||||
i64toi32_i32$0 = $0;
|
||||
i64toi32_i32$2 = i64toi32_i32$2;
|
||||
HEAP32[$0 >> 2] = $3;
|
||||
(wasm2asm_i32$0 = $0, wasm2asm_i32$1 = i64toi32_i32$2), ((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;
|
||||
i64toi32_i32$2 = i64toi32_i32$2;
|
||||
i64toi32_i32$0 = $0 + 8 | 0;
|
||||
i64toi32_i32$2 = i64toi32_i32$2;
|
||||
HEAP32[i64toi32_i32$0 >> 2] = $3;
|
||||
(wasm2asm_i32$0 = i64toi32_i32$0, wasm2asm_i32$1 = i64toi32_i32$2), ((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;
|
||||
i64toi32_i32$2 = i64toi32_i32$2;
|
||||
i64toi32_i32$0 = $0 + 16 | 0;
|
||||
i64toi32_i32$2 = i64toi32_i32$2;
|
||||
HEAP32[i64toi32_i32$0 >> 2] = $3;
|
||||
(wasm2asm_i32$0 = i64toi32_i32$0, wasm2asm_i32$1 = i64toi32_i32$2), ((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;
|
||||
i64toi32_i32$2 = i64toi32_i32$2;
|
||||
i64toi32_i32$0 = $0 + 24 | 0;
|
||||
i64toi32_i32$2 = i64toi32_i32$2;
|
||||
HEAP32[i64toi32_i32$0 >> 2] = $3;
|
||||
(wasm2asm_i32$0 = i64toi32_i32$0, wasm2asm_i32$1 = i64toi32_i32$2), ((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 - 32 | 0;
|
||||
$0 = $0 + 32 | 0;
|
||||
continue continue_0;
|
||||
@ -152,7 +165,7 @@ function asmFunc(global, env, buffer) {
|
||||
$1 = $1 | 0;
|
||||
var $2 = 0, $3 = 0, $4 = 0;
|
||||
if ($1 >>> 0 > 268435454 >>> 0) {
|
||||
abort(0 | 0, 4 | 0, 23 | 0, 39 | 0);
|
||||
abort(0 | 0, 8 | 0, 23 | 0, 39 | 0);
|
||||
abort();
|
||||
}
|
||||
$3 = $1 << 2 | 0;
|
||||
@ -174,7 +187,7 @@ function asmFunc(global, env, buffer) {
|
||||
function assembly_index_NBodySystem_constructor($0, $1) {
|
||||
$0 = $0 | 0;
|
||||
$1 = $1 | 0;
|
||||
var $2 = 0, $3 = 0, $4 = 0.0, $5 = 0.0, $6 = 0.0, $7 = 0.0, $8 = 0, $9 = 0;
|
||||
var $2 = 0, $3 = 0, $4 = 0.0, $5 = 0.0, $6 = 0.0, $7 = 0.0, $72 = 0, $8 = 0, $50 = 0;
|
||||
$8 = HEAP32[($1 + 4 | 0) >> 2] | 0;
|
||||
continue_0 : do {
|
||||
if (($2 | 0) < ($8 | 0)) {
|
||||
@ -189,16 +202,17 @@ function asmFunc(global, env, buffer) {
|
||||
break continue_0;
|
||||
} while (1);
|
||||
$2 = HEAPU32[$1 >> 2] | 0;
|
||||
if (0 >>> 0 < ((HEAP32[$2 >> 2] | 0) >>> 2 | 0) >>> 0) $9 = HEAPU32[($2 + 8 | 0) >> 2] | 0; else abort();
|
||||
$2 = $9;
|
||||
if (0 >>> 0 < ((HEAP32[$2 >> 2] | 0) >>> 2 | 0) >>> 0) $50 = HEAPU32[($2 + 8 | 0) >> 2] | 0; else abort();
|
||||
$2 = $50;
|
||||
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 | 0) == (0 | 0)) {
|
||||
$0 = $lib_allocator_arena_allocate_memory(4 | 0) | 0;
|
||||
HEAP32[$0 >> 2] = $1;
|
||||
if ($0) $72 = $0; else {
|
||||
$2 = $lib_allocator_arena_allocate_memory(4 | 0) | 0;
|
||||
HEAP32[$2 >> 2] = $1;
|
||||
$72 = $2;
|
||||
}
|
||||
return $0 | 0;
|
||||
return $72 | 0;
|
||||
}
|
||||
|
||||
function assembly_index_init() {
|
||||
@ -206,7 +220,7 @@ function asmFunc(global, env, buffer) {
|
||||
$1 = $lib_array_Array_Body__constructor(0 | 0, 5 | 0) | 0;
|
||||
$0 = $1;
|
||||
$2 = assembly_index_Body_constructor(0 | 0, +(0.0), +(0.0), +(0.0), +(0.0), +(0.0), +(0.0), +(39.47841760435743)) | 0;
|
||||
HEAP32[((HEAPU32[$0 >> 2] | 0) + 8 | 0) >> 2] = $2;
|
||||
HEAP32[((HEAPU32[$1 >> 2] | 0) + 8 | 0) >> 2] = $2;
|
||||
$0 = assembly_index_Body_constructor(0 | 0, +(4.841431442464721), +(-1.1603200440274284), +(-.10362204447112311), +(.606326392995832), +(2.81198684491626), +(-.02521836165988763), +(.03769367487038949)) | 0;
|
||||
HEAP32[(((HEAPU32[$1 >> 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;
|
||||
@ -220,14 +234,14 @@ function asmFunc(global, env, buffer) {
|
||||
|
||||
function assembly_index_getBody($0) {
|
||||
$0 = $0 | 0;
|
||||
var $1 = 0, $2 = 0, $3 = 0;
|
||||
var $1 = 0, $22 = 0, $20 = 0;
|
||||
$1 = HEAPU32[assembly_index_system >> 2] | 0;
|
||||
if ($0 >>> 0 < (HEAP32[($1 + 4 | 0) >> 2] | 0) >>> 0) {
|
||||
$1 = HEAPU32[$1 >> 2] | 0;
|
||||
if ($0 >>> 0 < ((HEAP32[$1 >> 2] | 0) >>> 2 | 0) >>> 0) $3 = HEAPU32[(($1 + ($0 << 2 | 0) | 0) + 8 | 0) >> 2] | 0; else abort();
|
||||
$2 = $3;
|
||||
} else $2 = 0;
|
||||
return $2 | 0;
|
||||
if ($0 >>> 0 < ((HEAP32[$1 >> 2] | 0) >>> 2 | 0) >>> 0) $20 = HEAPU32[(($1 + ($0 << 2 | 0) | 0) + 8 | 0) >> 2] | 0; else abort();
|
||||
$22 = $20;
|
||||
} else $22 = 0;
|
||||
return $22 | 0;
|
||||
}
|
||||
|
||||
function assembly_index_NBodySystem_advance($0, $1) {
|
||||
@ -283,7 +297,7 @@ 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, $6 = 0.0, $7 = 0.0, $8 = 0.0, $9 = 0.0, $11 = 0.0, $12 = 0.0, $13 = 0.0, $14 = 0.0, $15 = 0, $16 = 0.0, $17 = 0.0;
|
||||
var $1 = 0.0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $10 = 0.0, $6 = 0.0, $7 = 0.0, $8 = 0.0, $9 = 0.0, $30 = 0.0, $39 = 0.0, $45 = 0.0, $59 = 0.0, $72 = 0, $77 = 0.0, $92 = 0.0;
|
||||
$4 = HEAPU32[$0 >> 2] | 0;
|
||||
$5 = HEAP32[($4 + 4 | 0) >> 2] | 0;
|
||||
continue_0 : do {
|
||||
@ -292,27 +306,27 @@ function asmFunc(global, env, buffer) {
|
||||
$7 = +HEAPF64[$0 >> 3];
|
||||
$8 = +HEAPF64[($0 + 8 | 0) >> 3];
|
||||
$9 = +HEAPF64[($0 + 16 | 0) >> 3];
|
||||
$11 = $1;
|
||||
$30 = $1;
|
||||
$10 = +HEAPF64[($0 + 48 | 0) >> 3];
|
||||
$1 = +HEAPF64[($0 + 24 | 0) >> 3];
|
||||
$12 = $1 * $1;
|
||||
$39 = $1 * $1;
|
||||
$1 = +HEAPF64[($0 + 32 | 0) >> 3];
|
||||
$13 = $12 + $1 * $1;
|
||||
$45 = $39 + $1 * $1;
|
||||
$1 = +HEAPF64[($0 + 40 | 0) >> 3];
|
||||
$1 = $11 + .5 * $10 * ($13 + $1 * $1);
|
||||
$1 = $30 + .5 * $10 * ($45 + $1 * $1);
|
||||
$0 = $3 + 1 | 0;
|
||||
continue_1 : do {
|
||||
if ($0 >>> 0 < $5 >>> 0) {
|
||||
$14 = $7;
|
||||
$59 = $7;
|
||||
$2 = HEAPU32[$4 >> 2] | 0;
|
||||
if ($0 >>> 0 < ((HEAP32[$2 >> 2] | 0) >>> 2 | 0) >>> 0) $15 = HEAPU32[(($2 + ($0 << 2 | 0) | 0) + 8 | 0) >> 2] | 0; else abort();
|
||||
$2 = $15;
|
||||
$6 = $14 - +HEAPF64[$2 >> 3];
|
||||
$16 = $1;
|
||||
if ($0 >>> 0 < ((HEAP32[$2 >> 2] | 0) >>> 2 | 0) >>> 0) $72 = HEAPU32[(($2 + ($0 << 2 | 0) | 0) + 8 | 0) >> 2] | 0; else abort();
|
||||
$2 = $72;
|
||||
$6 = $59 - +HEAPF64[$2 >> 3];
|
||||
$77 = $1;
|
||||
$1 = $8 - +HEAPF64[($2 + 8 | 0) >> 3];
|
||||
$17 = $6 * $6 + $1 * $1;
|
||||
$92 = $6 * $6 + $1 * $1;
|
||||
$1 = $9 - +HEAPF64[($2 + 16 | 0) >> 3];
|
||||
$1 = $16 - $10 * +HEAPF64[($2 + 48 | 0) >> 3] / Math_sqrt($17 + $1 * $1);
|
||||
$1 = $77 - $10 * +HEAPF64[($2 + 48 | 0) >> 3] / Math_sqrt($92 + $1 * $1);
|
||||
$0 = $0 + 1 | 0;
|
||||
continue continue_1;
|
||||
}
|
||||
@ -349,42 +363,6 @@ function asmFunc(global, env, buffer) {
|
||||
$lib_allocator_arena_offset = $lib_allocator_arena_startOffset;
|
||||
}
|
||||
|
||||
function __wasm_ctz_i32(x) {
|
||||
x = x | 0;
|
||||
var $1 = 0;
|
||||
if ((x | 0) == (0 | 0)) $1 = 32; else $1 = 31 - Math_clz32(x ^ (x - 1 | 0) | 0) | 0;
|
||||
return $1 | 0;
|
||||
}
|
||||
|
||||
function __wasm_popcnt_i32(x) {
|
||||
x = x | 0;
|
||||
var count = 0, $2 = 0;
|
||||
count = 0;
|
||||
b : {
|
||||
l : do {
|
||||
$2 = count;
|
||||
if ((x | 0) == (0 | 0)) break b;
|
||||
x = x & (x - 1 | 0) | 0;
|
||||
count = count + 1 | 0;
|
||||
continue l;
|
||||
break l;
|
||||
} while (1);
|
||||
};
|
||||
return $2 | 0;
|
||||
}
|
||||
|
||||
function __wasm_rotl_i32(x, k) {
|
||||
x = x | 0;
|
||||
k = k | 0;
|
||||
return ((4294967295 >>> (k & 31 | 0) | 0) & x | 0) << (k & 31 | 0) | 0 | (((4294967295 << (32 - (k & 31 | 0) | 0) | 0) & x | 0) >>> (32 - (k & 31 | 0) | 0) | 0) | 0 | 0;
|
||||
}
|
||||
|
||||
function __wasm_rotr_i32(x, k) {
|
||||
x = x | 0;
|
||||
k = k | 0;
|
||||
return ((4294967295 << (k & 31 | 0) | 0) & x | 0) >>> (k & 31 | 0) | 0 | (((4294967295 >>> (32 - (k & 31 | 0) | 0) | 0) & x | 0) << (32 - (k & 31 | 0) | 0) | 0) | 0 | 0;
|
||||
}
|
||||
|
||||
function __wasm_grow_memory(pagesToAdd) {
|
||||
pagesToAdd = pagesToAdd | 0;
|
||||
var oldPages = __wasm_current_memory() | 0;
|
||||
|
Binary file not shown.
@ -1,11 +1,11 @@
|
||||
(module
|
||||
(type $F (func (result f64)))
|
||||
(type $v (func))
|
||||
(type $iFFFFFFFi (func (param i32 f64 f64 f64 f64 f64 f64 f64) (result i32)))
|
||||
(type $ii (func (param i32) (result i32)))
|
||||
(type $iii (func (param i32 i32) (result i32)))
|
||||
(type $iiiiv (func (param i32 i32 i32 i32)))
|
||||
(type $iiiv (func (param i32 i32 i32)))
|
||||
(type $F (func (result f64)))
|
||||
(type $iFv (func (param i32 f64)))
|
||||
(type $iF (func (param i32) (result f64)))
|
||||
(type $iv (func (param i32)))
|
||||
@ -13,9 +13,9 @@
|
||||
(global $~lib/allocator/arena/startOffset (mut i32) (i32.const 0))
|
||||
(global $~lib/allocator/arena/offset (mut i32) (i32.const 0))
|
||||
(global $assembly/index/system (mut i32) (i32.const 0))
|
||||
(global $HEAP_BASE i32 (i32.const 36))
|
||||
(global $HEAP_BASE i32 (i32.const 40))
|
||||
(memory $0 1)
|
||||
(data (i32.const 4) "\0d\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s")
|
||||
(data (i32.const 8) "\0d\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s")
|
||||
(export "init" (func $assembly/index/init))
|
||||
(export "getBody" (func $assembly/index/getBody))
|
||||
(export "step" (func $assembly/index/step))
|
||||
@ -39,7 +39,7 @@
|
||||
)
|
||||
(if
|
||||
(i32.gt_u
|
||||
(tee_local $2
|
||||
(tee_local $0
|
||||
(i32.and
|
||||
(i32.add
|
||||
(i32.add
|
||||
@ -54,7 +54,7 @@
|
||||
)
|
||||
)
|
||||
(i32.shl
|
||||
(tee_local $0
|
||||
(tee_local $2
|
||||
(current_memory)
|
||||
)
|
||||
(i32.const 16)
|
||||
@ -64,14 +64,14 @@
|
||||
(i32.lt_s
|
||||
(grow_memory
|
||||
(select
|
||||
(get_local $0)
|
||||
(get_local $2)
|
||||
(tee_local $4
|
||||
(tee_local $3
|
||||
(i32.shr_u
|
||||
(i32.and
|
||||
(i32.add
|
||||
(i32.sub
|
||||
(get_local $2)
|
||||
(get_local $0)
|
||||
(get_local $1)
|
||||
)
|
||||
(i32.const 65535)
|
||||
@ -83,7 +83,7 @@
|
||||
)
|
||||
)
|
||||
(i32.gt_s
|
||||
(get_local $0)
|
||||
(get_local $2)
|
||||
(get_local $4)
|
||||
)
|
||||
)
|
||||
@ -102,7 +102,7 @@
|
||||
)
|
||||
)
|
||||
(set_global $~lib/allocator/arena/offset
|
||||
(get_local $2)
|
||||
(get_local $0)
|
||||
)
|
||||
(return
|
||||
(get_local $1)
|
||||
@ -501,7 +501,7 @@
|
||||
(block
|
||||
(call $abort
|
||||
(i32.const 0)
|
||||
(i32.const 4)
|
||||
(i32.const 8)
|
||||
(i32.const 23)
|
||||
(i32.const 39)
|
||||
)
|
||||
@ -701,20 +701,21 @@
|
||||
(f64.const 39.47841760435743)
|
||||
)
|
||||
)
|
||||
(if
|
||||
(i32.eqz
|
||||
(get_local $0)
|
||||
)
|
||||
(i32.store
|
||||
(tee_local $0
|
||||
(call $~lib/allocator/arena/allocate_memory
|
||||
(i32.const 4)
|
||||
(if (result i32)
|
||||
(get_local $0)
|
||||
(get_local $0)
|
||||
(block (result i32)
|
||||
(i32.store
|
||||
(tee_local $2
|
||||
(call $~lib/allocator/arena/allocate_memory
|
||||
(i32.const 4)
|
||||
)
|
||||
)
|
||||
(get_local $1)
|
||||
)
|
||||
(get_local $1)
|
||||
(get_local $2)
|
||||
)
|
||||
)
|
||||
(get_local $0)
|
||||
)
|
||||
(func $assembly/index/init (; 6 ;) (type $v)
|
||||
(local $0 i32)
|
||||
|
@ -1,13 +1,13 @@
|
||||
(module
|
||||
(type $i (func (result i32)))
|
||||
(type $F (func (result f64)))
|
||||
(type $v (func))
|
||||
(type $i (func (result i32)))
|
||||
(type $iFFFFFFFi (func (param i32 f64 f64 f64 f64 f64 f64 f64) (result i32)))
|
||||
(type $ii (func (param i32) (result i32)))
|
||||
(type $iii (func (param i32 i32) (result i32)))
|
||||
(type $iiiiv (func (param i32 i32 i32 i32)))
|
||||
(type $iiiv (func (param i32 i32 i32)))
|
||||
(type $iFFFi (func (param i32 f64 f64 f64) (result i32)))
|
||||
(type $F (func (result f64)))
|
||||
(type $iFv (func (param i32 f64)))
|
||||
(type $iF (func (param i32) (result f64)))
|
||||
(type $iv (func (param i32)))
|
||||
@ -23,10 +23,10 @@
|
||||
(global $assembly/index/system (mut i32) (i32.const 0))
|
||||
(global $~lib/internal/arraybuffer/HEADER_SIZE i32 (i32.const 8))
|
||||
(global $~lib/internal/arraybuffer/MAX_BLENGTH i32 (i32.const 1073741816))
|
||||
(global $HEAP_BASE i32 (i32.const 96))
|
||||
(global $HEAP_BASE i32 (i32.const 100))
|
||||
(memory $0 1)
|
||||
(data (i32.const 4) "\0d\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00")
|
||||
(data (i32.const 36) "\1c\00\00\00~\00l\00i\00b\00/\00i\00n\00t\00e\00r\00n\00a\00l\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00")
|
||||
(data (i32.const 8) "\0d\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00")
|
||||
(data (i32.const 40) "\1c\00\00\00~\00l\00i\00b\00/\00i\00n\00t\00e\00r\00n\00a\00l\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00")
|
||||
(export "init" (func $assembly/index/init))
|
||||
(export "getBody" (func $assembly/index/getBody))
|
||||
(export "step" (func $assembly/index/step))
|
||||
@ -159,7 +159,7 @@
|
||||
;;@ ~lib/allocator/arena.ts:25:37
|
||||
(i32.const 0)
|
||||
)
|
||||
;;@ ~lib/allocator/arena.ts:26:8
|
||||
;;@ ~lib/allocator/arena.ts:25:40
|
||||
(if
|
||||
;;@ ~lib/allocator/arena.ts:26:12
|
||||
(i32.lt_s
|
||||
@ -170,7 +170,7 @@
|
||||
;;@ ~lib/allocator/arena.ts:26:39
|
||||
(i32.const 0)
|
||||
)
|
||||
;;@ ~lib/allocator/arena.ts:27:10
|
||||
;;@ ~lib/allocator/arena.ts:26:42
|
||||
(unreachable)
|
||||
)
|
||||
)
|
||||
@ -195,8 +195,7 @@
|
||||
(func $assembly/index/Body#constructor (; 2 ;) (type $iFFFFFFFi) (param $0 i32) (param $1 f64) (param $2 f64) (param $3 f64) (param $4 f64) (param $5 f64) (param $6 f64) (param $7 f64) (result i32)
|
||||
(local $8 i32)
|
||||
;;@ assembly/index.ts:19:4
|
||||
(block
|
||||
)
|
||||
(nop)
|
||||
(tee_local $0
|
||||
(if (result i32)
|
||||
(get_local $0)
|
||||
@ -243,7 +242,7 @@
|
||||
)
|
||||
)
|
||||
(func $assembly/index/Sun (; 3 ;) (type $i) (result i32)
|
||||
;;@ assembly/index.ts:32:2
|
||||
;;@ assembly/index.ts:29:21
|
||||
(return
|
||||
;;@ assembly/index.ts:30:9
|
||||
(call $assembly/index/Body#constructor
|
||||
@ -266,7 +265,7 @@
|
||||
)
|
||||
)
|
||||
(func $assembly/index/Jupiter (; 4 ;) (type $i) (result i32)
|
||||
;;@ assembly/index.ts:44:2
|
||||
;;@ assembly/index.ts:35:25
|
||||
(return
|
||||
;;@ assembly/index.ts:36:9
|
||||
(call $assembly/index/Body#constructor
|
||||
@ -305,7 +304,7 @@
|
||||
)
|
||||
)
|
||||
(func $assembly/index/Saturn (; 5 ;) (type $i) (result i32)
|
||||
;;@ assembly/index.ts:56:2
|
||||
;;@ assembly/index.ts:47:24
|
||||
(return
|
||||
;;@ assembly/index.ts:48:9
|
||||
(call $assembly/index/Body#constructor
|
||||
@ -344,7 +343,7 @@
|
||||
)
|
||||
)
|
||||
(func $assembly/index/Uranus (; 6 ;) (type $i) (result i32)
|
||||
;;@ assembly/index.ts:68:2
|
||||
;;@ assembly/index.ts:59:24
|
||||
(return
|
||||
;;@ assembly/index.ts:60:9
|
||||
(call $assembly/index/Body#constructor
|
||||
@ -383,7 +382,7 @@
|
||||
)
|
||||
)
|
||||
(func $assembly/index/Neptune (; 7 ;) (type $i) (result i32)
|
||||
;;@ assembly/index.ts:80:2
|
||||
;;@ assembly/index.ts:71:25
|
||||
(return
|
||||
;;@ assembly/index.ts:72:9
|
||||
(call $assembly/index/Body#constructor
|
||||
@ -422,7 +421,7 @@
|
||||
)
|
||||
)
|
||||
(func $~lib/internal/arraybuffer/computeSize (; 8 ;) (type $ii) (param $0 i32) (result i32)
|
||||
;;@ ~lib/internal/arraybuffer.ts:17:77
|
||||
;;@ ~lib/internal/arraybuffer.ts:10:52
|
||||
(return
|
||||
;;@ ~lib/internal/arraybuffer.ts:17:9
|
||||
(i32.shl
|
||||
@ -463,7 +462,7 @@
|
||||
(block
|
||||
(call $abort
|
||||
(i32.const 0)
|
||||
(i32.const 36)
|
||||
(i32.const 40)
|
||||
(i32.const 22)
|
||||
(i32.const 2)
|
||||
)
|
||||
@ -1023,8 +1022,6 @@
|
||||
(local $4 i32)
|
||||
;;@ ~lib/array.ts:21:31
|
||||
(block
|
||||
;;@ ~lib/array.ts:22:4
|
||||
(nop)
|
||||
;;@ ~lib/array.ts:23:4
|
||||
(if
|
||||
;;@ ~lib/array.ts:23:8
|
||||
@ -1037,7 +1034,7 @@
|
||||
(block
|
||||
(call $abort
|
||||
(i32.const 0)
|
||||
(i32.const 4)
|
||||
(i32.const 8)
|
||||
(i32.const 23)
|
||||
(i32.const 39)
|
||||
)
|
||||
@ -1114,7 +1111,7 @@
|
||||
)
|
||||
(func $~lib/array/Array<Body>#__unchecked_set (; 12 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32)
|
||||
(local $3 i32)
|
||||
;;@ ~lib/array.ts:96:4
|
||||
;;@ ~lib/array.ts:95:54
|
||||
(block $~lib/internal/arraybuffer/storeUnsafe<Body,Body>|inlined.0
|
||||
(set_local $3
|
||||
;;@ ~lib/array.ts:96:21
|
||||
@ -1141,7 +1138,7 @@
|
||||
)
|
||||
)
|
||||
(func $~lib/array/Array<Body>#get:length (; 13 ;) (type $ii) (param $0 i32) (result i32)
|
||||
;;@ ~lib/array.ts:36:16
|
||||
;;@ ~lib/array.ts:35:20
|
||||
(return
|
||||
;;@ ~lib/array.ts:36:11
|
||||
(i32.load offset=4
|
||||
@ -1151,7 +1148,7 @@
|
||||
)
|
||||
(func $~lib/array/Array<Body>#__unchecked_get (; 14 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
|
||||
(local $2 i32)
|
||||
;;@ ~lib/array.ts:77:46
|
||||
;;@ ~lib/array.ts:76:41
|
||||
(return
|
||||
;;@ ~lib/array.ts:77:11
|
||||
(block $~lib/internal/arraybuffer/loadUnsafe<Body,Body>|inlined.0 (result i32)
|
||||
@ -1284,7 +1281,6 @@
|
||||
(local $6 i32)
|
||||
(local $7 i32)
|
||||
(local $8 f64)
|
||||
(local $9 i32)
|
||||
;;@ assembly/index.ts:87:4
|
||||
(block
|
||||
;;@ assembly/index.ts:88:4
|
||||
@ -1422,16 +1418,16 @@
|
||||
(get_local $0)
|
||||
(tee_local $0
|
||||
(block (result i32)
|
||||
(set_local $9
|
||||
(set_local $6
|
||||
(call $~lib/allocator/arena/allocate_memory
|
||||
(i32.const 4)
|
||||
)
|
||||
)
|
||||
(i32.store
|
||||
(get_local $9)
|
||||
(get_local $6)
|
||||
(get_local $1)
|
||||
)
|
||||
(get_local $9)
|
||||
(get_local $6)
|
||||
)
|
||||
)
|
||||
)
|
||||
@ -1439,7 +1435,7 @@
|
||||
)
|
||||
(func $assembly/index/init (; 18 ;) (type $v)
|
||||
(local $0 i32)
|
||||
;;@ assembly/index.ts:189:2
|
||||
;;@ assembly/index.ts:188:29
|
||||
(set_global $assembly/index/system
|
||||
;;@ assembly/index.ts:189:11
|
||||
(call $assembly/index/NBodySystem#constructor
|
||||
@ -1960,7 +1956,6 @@
|
||||
(local $16 f64)
|
||||
(local $17 f64)
|
||||
(local $18 f64)
|
||||
(local $19 f64)
|
||||
;;@ assembly/index.ts:155:4
|
||||
(set_local $1
|
||||
;;@ assembly/index.ts:155:12
|
||||
@ -2157,7 +2152,7 @@
|
||||
)
|
||||
)
|
||||
;;@ assembly/index.ts:178:8
|
||||
(set_local $19
|
||||
(set_local $18
|
||||
;;@ assembly/index.ts:178:28
|
||||
(block $~lib/math/NativeMath.sqrt|inlined.1 (result f64)
|
||||
(set_local $18
|
||||
@ -2208,7 +2203,7 @@
|
||||
)
|
||||
)
|
||||
;;@ assembly/index.ts:179:32
|
||||
(get_local $19)
|
||||
(get_local $18)
|
||||
)
|
||||
)
|
||||
)
|
||||
@ -2264,7 +2259,7 @@
|
||||
)
|
||||
(func $assembly/index/bench (; 23 ;) (type $iv) (param $0 i32)
|
||||
(local $1 i32)
|
||||
;;@ assembly/index.ts:209:2
|
||||
;;@ assembly/index.ts:208:40
|
||||
(block $break|0
|
||||
;;@ assembly/index.ts:209:7
|
||||
(set_local $1
|
||||
|
@ -6,10 +6,6 @@ const nbodyRS = require("../rust/index.js");
|
||||
|
||||
// Load ASMJS version
|
||||
var src = fs.readFileSync(__dirname + "/../build/index.asm.js", "utf8");
|
||||
if (src.indexOf("var Math_sqrt =") < 0) { // currently missing in asm.js output
|
||||
let p = src.indexOf(" var abort = env.abort;");
|
||||
src = src.substring(0, p) + " var Math_sqrt = global.Math.sqrt;\n " + src.substring(p);
|
||||
}
|
||||
|
||||
const nbodyAsmJS = eval("0," + src)({
|
||||
Int8Array,
|
||||
|
@ -14,21 +14,21 @@ const loader = require("@assemblyscript/loader");
|
||||
API
|
||||
---
|
||||
|
||||
* **instantiate**<`T`>(module: `WebAssembly.Module`, imports?: `WasmImports`): `ASModule<T>`<br />
|
||||
* **instantiate**<`T`>(module: `WebAssembly.Module`, imports?: `WasmImports`): `ASUtil & T`<br />
|
||||
Instantiates an AssemblyScript module using the specified imports.
|
||||
|
||||
* **instantiateBuffer**<`T`>(buffer: `Uint8Array`, imports?: `WasmImports`): `ASModule<T>`<br />
|
||||
* **instantiateBuffer**<`T`>(buffer: `Uint8Array`, imports?: `WasmImports`): `ASUtil & T`<br />
|
||||
Instantiates an AssemblyScript module from a buffer using the specified imports.
|
||||
|
||||
* **instantiateStreaming**<`T`>(response: `Response`, imports?: `WasmImports`): `Promise<ASModule<T>>`<br />
|
||||
* **instantiateStreaming**<`T`>(response: `Response`, imports?: `WasmImports`): `Promise<ASUtil & T>`<br />
|
||||
Instantiates an AssemblyScript module from a response using the sspecified imports.
|
||||
|
||||
* **demangle**<`T`>(exports: `WasmExports`): `T`<br />
|
||||
Demangles an AssemblyScript module's exports to a friendly object structure. You usually don't have to call this manually as instantiation does this implicitly.
|
||||
|
||||
**Note:** `T` above can either be omitted if the structure of the module is unknown, or can reference a `.d.ts` as produced by the compiler with the `-d` option.
|
||||
**Note:** `T` above can either be omitted if the structure of the module is unknown, or can reference a `.d.ts` (i.e. `typeof MyModule`) as produced by the compiler with the `-d` option.
|
||||
|
||||
Instances of `ASModule` are automatically populated with some useful utility:
|
||||
Instances are automatically populated with useful utility:
|
||||
|
||||
* **I8**: `Int8Array`<br />
|
||||
An 8-bit signed integer view on the memory.
|
||||
@ -126,7 +126,7 @@ var str = module.getString(ptrToString);
|
||||
```ts
|
||||
import MyModule from "myModule"; // pointing at the d.ts
|
||||
|
||||
const myModule = loader.instatiateBuffer<MyModule>(fs.readFileSync("myModule.wasm"), myImports);
|
||||
const myModule = loader.instatiateBuffer<typeof MyModule>(fs.readFileSync("myModule.wasm"), myImports);
|
||||
```
|
||||
|
||||
**Hint:** You can produce a `.d.ts` for your module with the `-d` option on the command line.
|
||||
|
3237
package-lock.json
generated
3237
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@ -12,7 +12,7 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@protobufjs/utf8": "^1.1.0",
|
||||
"binaryen": "47.0.0-nightly.20180513",
|
||||
"binaryen": "48.0.0-nightly.20180520",
|
||||
"glob": "^7.1.2",
|
||||
"long": "^4.0.0",
|
||||
"minimist": "^1.2.0",
|
||||
|
@ -314,7 +314,7 @@ export class TSDBuilder extends ExportsWalker {
|
||||
indent(sb, this.indentLevel);
|
||||
if (element.is(CommonFlags.STATIC)) {
|
||||
if (isConst) sb.push("static readonly ");
|
||||
else assert(false);
|
||||
else sb.push("static ");
|
||||
} else {
|
||||
if (isConst) sb.push("const ");
|
||||
else sb.push("var ");
|
||||
@ -354,20 +354,20 @@ export class TSDBuilder extends ExportsWalker {
|
||||
}
|
||||
|
||||
visitFunction(element: Function): void {
|
||||
if (element.is(CommonFlags.PRIVATE)) return;
|
||||
if (element.isAny(CommonFlags.PRIVATE | CommonFlags.SET)) return;
|
||||
var sb = this.sb;
|
||||
var signature = element.signature;
|
||||
indent(sb, this.indentLevel);
|
||||
if (element.is(CommonFlags.PROTECTED)) sb.push("protected ");
|
||||
if (element.is(CommonFlags.STATIC)) sb.push("static ");
|
||||
if (element.is(CommonFlags.GET)) {
|
||||
sb.push("get ");
|
||||
sb.push(element.prototype.declaration.name.text); // 'get:funcName' internally
|
||||
} else if (element.is(CommonFlags.SET)) {
|
||||
sb.push("set ");
|
||||
sb.push(element.prototype.declaration.name.text);
|
||||
sb.push(": ");
|
||||
sb.push(this.typeToString(signature.returnType));
|
||||
sb.push(";\n");
|
||||
return;
|
||||
} else {
|
||||
if (!element.is(CommonFlags.INSTANCE)) sb.push("function ");
|
||||
if (!element.isAny(CommonFlags.STATIC | CommonFlags.INSTANCE)) sb.push("function ");
|
||||
sb.push(element.simpleName);
|
||||
}
|
||||
sb.push("(");
|
||||
@ -398,9 +398,7 @@ export class TSDBuilder extends ExportsWalker {
|
||||
if (isInterface) {
|
||||
sb.push("interface ");
|
||||
} else {
|
||||
if (element.is(CommonFlags.ABSTRACT)) {
|
||||
sb.push("abstract ");
|
||||
}
|
||||
if (element.is(CommonFlags.ABSTRACT)) sb.push("abstract ");
|
||||
sb.push("class ");
|
||||
}
|
||||
sb.push(element.simpleName);
|
||||
@ -441,27 +439,6 @@ export class TSDBuilder extends ExportsWalker {
|
||||
sb.push(": ");
|
||||
sb.push(this.typeToString(element.type));
|
||||
sb.push(";\n");
|
||||
/* TBD: the compiler implicitly generates setters if the class is exported
|
||||
indent(sb, this.indentLevel);
|
||||
sb.push("get ");
|
||||
sb.push(element.simpleName);
|
||||
sb.push("(): ");
|
||||
sb.push(this.typeToString(element.type));
|
||||
sb.push(";\n");
|
||||
if (!element.is(CommonFlags.READONLY)) {
|
||||
indent(sb, this.indentLevel);
|
||||
if (element.is(CommonFlags.PROTECTED)) sb.push("protected ");
|
||||
if (element.is(CommonFlags.STATIC)) sb.push("static ");
|
||||
if (element.is(CommonFlags.READONLY)) sb.push("readonly ");
|
||||
sb.push("set ");
|
||||
sb.push(element.simpleName);
|
||||
sb.push("(");
|
||||
sb.push(element.simpleName);
|
||||
sb.push(": ");
|
||||
sb.push(this.typeToString(element.type));
|
||||
sb.push(");\n");
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
visitNamespace(element: Element): void {
|
||||
@ -519,6 +496,7 @@ export class TSDBuilder extends ExportsWalker {
|
||||
this.walk();
|
||||
--this.indentLevel;
|
||||
sb.push("}\n");
|
||||
sb.push("export default ASModule;\n");
|
||||
return this.sb.join("");
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user