mirror of
https://github.com/fluencelabs/assemblyscript
synced 2025-05-28 15:11:25 +00:00
Remove noMemory option; Omit 'start' if 'main' is present; Unwrap more unnecessary blocks
This commit is contained in:
parent
0d64c9661a
commit
27e61f8f67
@ -384,7 +384,6 @@ exports.main = function main(argv, options, callback) {
|
||||
assemblyscript.setTarget(compilerOptions, 0);
|
||||
assemblyscript.setNoTreeShaking(compilerOptions, !!args.noTreeShaking);
|
||||
assemblyscript.setNoAssert(compilerOptions, !!args.noAssert);
|
||||
assemblyscript.setNoMemory(compilerOptions, !!args.noMemory);
|
||||
assemblyscript.setImportMemory(compilerOptions, !!args.importMemory);
|
||||
assemblyscript.setImportTable(compilerOptions, !!args.importTable);
|
||||
assemblyscript.setMemoryBase(compilerOptions, args.memoryBase >>> 0);
|
||||
|
@ -95,10 +95,6 @@
|
||||
"description": "Performs compilation as usual but does not emit code.",
|
||||
"type": "boolean"
|
||||
},
|
||||
"noMemory": {
|
||||
"description": "Does not set up a memory. Useful for low-level WebAssembly.",
|
||||
"type": "boolean"
|
||||
},
|
||||
"importMemory": {
|
||||
"description": "Imports the memory instance provided by the embedder.",
|
||||
"type": "boolean"
|
||||
|
2
dist/asc.js
vendored
2
dist/asc.js
vendored
File diff suppressed because one or more lines are too long
2
dist/asc.js.map
vendored
2
dist/asc.js.map
vendored
File diff suppressed because one or more lines are too long
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
Binary file not shown.
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -4,6 +4,7 @@
|
||||
(type $iiiiv (func (param i32 i32 i32 i32)))
|
||||
(global $assembly/i64/lo (mut i32) (i32.const 0))
|
||||
(global $assembly/i64/hi (mut i32) (i32.const 0))
|
||||
(memory $0 1)
|
||||
(export "getLo" (func $assembly/i64/getLo))
|
||||
(export "getHi" (func $assembly/i64/getHi))
|
||||
(export "clz" (func $assembly/i64/clz))
|
||||
@ -35,6 +36,7 @@
|
||||
(export "gt_u" (func $assembly/i64/gt_u))
|
||||
(export "ge_s" (func $assembly/i64/ge_s))
|
||||
(export "ge_u" (func $assembly/i64/ge_u))
|
||||
(export "memory" (memory $0))
|
||||
(func $assembly/i64/getLo (; 0 ;) (type $i) (result i32)
|
||||
;;@ assembly/i64.ts:4:9
|
||||
(get_global $assembly/i64/lo)
|
||||
|
@ -6,6 +6,8 @@
|
||||
(global $assembly/i64/hi (mut i32) (i32.const 0))
|
||||
(global $NaN f64 (f64.const nan:0x8000000000000))
|
||||
(global $Infinity f64 (f64.const inf))
|
||||
(global $HEAP_BASE i32 (i32.const 8))
|
||||
(memory $0 1)
|
||||
(export "getLo" (func $assembly/i64/getLo))
|
||||
(export "getHi" (func $assembly/i64/getHi))
|
||||
(export "clz" (func $assembly/i64/clz))
|
||||
@ -37,19 +39,14 @@
|
||||
(export "gt_u" (func $assembly/i64/gt_u))
|
||||
(export "ge_s" (func $assembly/i64/ge_s))
|
||||
(export "ge_u" (func $assembly/i64/ge_u))
|
||||
(export "memory" (memory $0))
|
||||
(func $assembly/i64/getLo (; 0 ;) (type $i) (result i32)
|
||||
;;@ assembly/i64.ts:3:29
|
||||
(return
|
||||
;;@ assembly/i64.ts:4:9
|
||||
(get_global $assembly/i64/lo)
|
||||
)
|
||||
;;@ assembly/i64.ts:4:9
|
||||
(get_global $assembly/i64/lo)
|
||||
)
|
||||
(func $assembly/i64/getHi (; 1 ;) (type $i) (result i32)
|
||||
;;@ assembly/i64.ts:7:29
|
||||
(return
|
||||
;;@ assembly/i64.ts:8:9
|
||||
(get_global $assembly/i64/hi)
|
||||
)
|
||||
;;@ assembly/i64.ts:8:9
|
||||
(get_global $assembly/i64/hi)
|
||||
)
|
||||
(func $assembly/i64/clz (; 2 ;) (type $iiv) (param $0 i32) (param $1 i32)
|
||||
(local $2 i64)
|
||||
|
@ -17,8 +17,8 @@
|
||||
},
|
||||
"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 -d build/optimized.d.ts --noMemory --validate --sourceMap --measure",
|
||||
"asbuild:untouched": "asc assembly/i64.ts -t build/untouched.wat -b build/untouched.wasm --validate --sourceMap --measure",
|
||||
"asbuild:optimized": "asc -O assembly/i64.ts -b build/optimized.wasm -t build/optimized.wat -d build/optimized.d.ts --validate --sourceMap --measure",
|
||||
"test": "node tests"
|
||||
},
|
||||
"files": [
|
||||
|
Binary file not shown.
@ -10,9 +10,9 @@
|
||||
(func $assembly/index/computeLine (; 2 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
|
||||
(local $4 f64)
|
||||
(local $5 f64)
|
||||
(local $6 i32)
|
||||
(local $6 f64)
|
||||
(local $7 f64)
|
||||
(local $8 f64)
|
||||
(local $8 i32)
|
||||
(local $9 f64)
|
||||
(local $10 f64)
|
||||
(local $11 f64)
|
||||
@ -21,8 +21,10 @@
|
||||
(set_local $11
|
||||
;;@ assembly/index.ts:8:19
|
||||
(f64.div
|
||||
(f64.convert_u/i32
|
||||
(get_local $1)
|
||||
(tee_local $6
|
||||
(f64.convert_u/i32
|
||||
(get_local $1)
|
||||
)
|
||||
)
|
||||
;;@ assembly/index.ts:8:27
|
||||
(f64.const 1.6)
|
||||
@ -34,16 +36,20 @@
|
||||
(f64.mul
|
||||
(f64.sub
|
||||
(f64.convert_u/i32
|
||||
;;@ assembly/index.ts:11:19
|
||||
(get_local $0)
|
||||
)
|
||||
;;@ assembly/index.ts:9:19
|
||||
(f64.div
|
||||
(f64.convert_u/i32
|
||||
(get_local $2)
|
||||
;;@ assembly/index.ts:9:2
|
||||
(tee_local $7
|
||||
;;@ assembly/index.ts:9:19
|
||||
(f64.div
|
||||
(tee_local $4
|
||||
(f64.convert_u/i32
|
||||
(get_local $2)
|
||||
)
|
||||
)
|
||||
;;@ assembly/index.ts:9:28
|
||||
(f64.const 2)
|
||||
)
|
||||
;;@ assembly/index.ts:9:28
|
||||
(f64.const 2)
|
||||
)
|
||||
)
|
||||
;;@ assembly/index.ts:10:2
|
||||
@ -56,150 +62,130 @@
|
||||
;;@ assembly/index.ts:10:25
|
||||
(f64.mul
|
||||
(f64.const 3)
|
||||
(f64.convert_u/i32
|
||||
;;@ assembly/index.ts:10:29
|
||||
(get_local $1)
|
||||
)
|
||||
(get_local $6)
|
||||
)
|
||||
;;@ assembly/index.ts:10:36
|
||||
(f64.mul
|
||||
(f64.const 4)
|
||||
(f64.convert_u/i32
|
||||
;;@ assembly/index.ts:10:40
|
||||
(get_local $2)
|
||||
)
|
||||
(get_local $4)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
;;@ assembly/index.ts:12:7
|
||||
(set_local $2
|
||||
;;@ assembly/index.ts:12:20
|
||||
(i32.const 0)
|
||||
)
|
||||
(loop $continue|0
|
||||
(if
|
||||
;;@ assembly/index.ts:12:23
|
||||
(i32.lt_u
|
||||
(get_local $2)
|
||||
;;@ assembly/index.ts:12:27
|
||||
(get_local $1)
|
||||
;;@ assembly/index.ts:12:2
|
||||
(block $break|0
|
||||
(loop $repeat|0
|
||||
(br_if $break|0
|
||||
;;@ assembly/index.ts:12:23
|
||||
(i32.ge_u
|
||||
(get_local $8)
|
||||
(get_local $1)
|
||||
)
|
||||
)
|
||||
(block
|
||||
;;@ assembly/index.ts:13:4
|
||||
(set_local $10
|
||||
;;@ assembly/index.ts:13:15
|
||||
(f64.mul
|
||||
(f64.sub
|
||||
(f64.convert_u/i32
|
||||
;;@ assembly/index.ts:13:16
|
||||
(get_local $2)
|
||||
)
|
||||
;;@ assembly/index.ts:13:20
|
||||
(get_local $11)
|
||||
;;@ assembly/index.ts:13:4
|
||||
(set_local $10
|
||||
;;@ assembly/index.ts:13:15
|
||||
(f64.mul
|
||||
(f64.sub
|
||||
(f64.convert_u/i32
|
||||
(get_local $8)
|
||||
)
|
||||
;;@ assembly/index.ts:13:34
|
||||
(get_local $12)
|
||||
(get_local $11)
|
||||
)
|
||||
(get_local $12)
|
||||
)
|
||||
(set_local $4
|
||||
;;@ assembly/index.ts:16:13
|
||||
(f64.const 0)
|
||||
)
|
||||
(set_local $5
|
||||
;;@ assembly/index.ts:16:23
|
||||
(f64.const 0)
|
||||
)
|
||||
;;@ assembly/index.ts:17:4
|
||||
(set_local $6
|
||||
;;@ assembly/index.ts:17:25
|
||||
(i32.const 0)
|
||||
)
|
||||
;;@ assembly/index.ts:18:4
|
||||
(block $break|1
|
||||
(loop $continue|1
|
||||
(if
|
||||
;;@ assembly/index.ts:18:11
|
||||
(f64.le
|
||||
)
|
||||
(set_local $4
|
||||
;;@ assembly/index.ts:16:13
|
||||
(f64.const 0)
|
||||
)
|
||||
(set_local $5
|
||||
;;@ assembly/index.ts:16:23
|
||||
(f64.const 0)
|
||||
)
|
||||
;;@ assembly/index.ts:17:4
|
||||
(set_local $2
|
||||
;;@ assembly/index.ts:17:25
|
||||
(i32.const 0)
|
||||
)
|
||||
;;@ assembly/index.ts:18:4
|
||||
(block $break|1
|
||||
(loop $continue|1
|
||||
(if
|
||||
;;@ assembly/index.ts:18:11
|
||||
(f64.le
|
||||
(f64.add
|
||||
(tee_local $6
|
||||
;;@ assembly/index.ts:18:19
|
||||
(f64.mul
|
||||
(get_local $4)
|
||||
(get_local $4)
|
||||
)
|
||||
)
|
||||
;;@ assembly/index.ts:18:30
|
||||
(tee_local $7
|
||||
;;@ assembly/index.ts:18:38
|
||||
(f64.mul
|
||||
(get_local $5)
|
||||
(get_local $5)
|
||||
)
|
||||
)
|
||||
)
|
||||
;;@ assembly/index.ts:18:50
|
||||
(f64.const 4)
|
||||
)
|
||||
(block
|
||||
;;@ assembly/index.ts:20:6
|
||||
(set_local $5
|
||||
;;@ assembly/index.ts:20:11
|
||||
(f64.add
|
||||
(tee_local $7
|
||||
;;@ assembly/index.ts:18:19
|
||||
(f64.mul
|
||||
(f64.mul
|
||||
(get_local $4)
|
||||
;;@ assembly/index.ts:18:24
|
||||
(f64.const 2)
|
||||
(get_local $4)
|
||||
)
|
||||
(get_local $5)
|
||||
)
|
||||
;;@ assembly/index.ts:18:30
|
||||
(tee_local $8
|
||||
;;@ assembly/index.ts:18:38
|
||||
(f64.mul
|
||||
(get_local $5)
|
||||
;;@ assembly/index.ts:18:43
|
||||
(get_local $5)
|
||||
)
|
||||
)
|
||||
(get_local $9)
|
||||
)
|
||||
;;@ assembly/index.ts:18:50
|
||||
(f64.const 4)
|
||||
)
|
||||
(block
|
||||
;;@ assembly/index.ts:20:6
|
||||
(set_local $5
|
||||
;;@ assembly/index.ts:20:11
|
||||
(f64.add
|
||||
(f64.mul
|
||||
(f64.mul
|
||||
(f64.const 2)
|
||||
;;@ assembly/index.ts:20:17
|
||||
(get_local $4)
|
||||
)
|
||||
;;@ assembly/index.ts:20:22
|
||||
(get_local $5)
|
||||
)
|
||||
;;@ assembly/index.ts:20:27
|
||||
(get_local $9)
|
||||
)
|
||||
)
|
||||
;;@ assembly/index.ts:21:6
|
||||
(set_local $4
|
||||
;;@ assembly/index.ts:19:18
|
||||
(f64.add
|
||||
(f64.sub
|
||||
(get_local $7)
|
||||
;;@ assembly/index.ts:19:25
|
||||
(get_local $8)
|
||||
)
|
||||
;;@ assembly/index.ts:19:32
|
||||
(get_local $10)
|
||||
)
|
||||
)
|
||||
;;@ assembly/index.ts:22:30
|
||||
(br_if $break|1
|
||||
;;@ assembly/index.ts:22:10
|
||||
(i32.ge_u
|
||||
;;@ assembly/index.ts:21:6
|
||||
(set_local $4
|
||||
;;@ assembly/index.ts:19:18
|
||||
(f64.add
|
||||
(f64.sub
|
||||
(get_local $6)
|
||||
;;@ assembly/index.ts:22:23
|
||||
(get_local $3)
|
||||
(get_local $7)
|
||||
)
|
||||
(get_local $10)
|
||||
)
|
||||
;;@ assembly/index.ts:23:6
|
||||
(set_local $6
|
||||
(i32.add
|
||||
;;@ assembly/index.ts:23:8
|
||||
(get_local $6)
|
||||
(i32.const 1)
|
||||
)
|
||||
)
|
||||
(br $continue|1)
|
||||
)
|
||||
;;@ assembly/index.ts:22:30
|
||||
(br_if $break|1
|
||||
;;@ assembly/index.ts:22:10
|
||||
(i32.ge_u
|
||||
(get_local $2)
|
||||
(get_local $3)
|
||||
)
|
||||
)
|
||||
;;@ assembly/index.ts:23:6
|
||||
(set_local $2
|
||||
(i32.add
|
||||
(get_local $2)
|
||||
(i32.const 1)
|
||||
)
|
||||
)
|
||||
(br $continue|1)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
;;@ assembly/index.ts:27:4
|
||||
(block $break|2
|
||||
;;@ assembly/index.ts:27:9
|
||||
(set_local $7
|
||||
(set_local $6
|
||||
;;@ assembly/index.ts:27:29
|
||||
(f64.min
|
||||
;;@ assembly/index.ts:27:33
|
||||
@ -210,127 +196,114 @@
|
||||
)
|
||||
)
|
||||
)
|
||||
(loop $continue|2
|
||||
(if
|
||||
;;@ assembly/index.ts:27:44
|
||||
(f64.lt
|
||||
(f64.convert_u/i32
|
||||
(loop $repeat|2
|
||||
(br_if $break|2
|
||||
(i32.eqz
|
||||
;;@ assembly/index.ts:27:44
|
||||
(f64.lt
|
||||
(f64.convert_u/i32
|
||||
(get_local $2)
|
||||
)
|
||||
(get_local $6)
|
||||
)
|
||||
;;@ assembly/index.ts:27:56
|
||||
(get_local $7)
|
||||
)
|
||||
(block
|
||||
;;@ assembly/index.ts:28:6
|
||||
(set_local $8
|
||||
;;@ assembly/index.ts:28:18
|
||||
(f64.add
|
||||
(f64.sub
|
||||
(f64.mul
|
||||
(get_local $4)
|
||||
;;@ assembly/index.ts:28:23
|
||||
(get_local $4)
|
||||
)
|
||||
;;@ assembly/index.ts:28:28
|
||||
(f64.mul
|
||||
(get_local $5)
|
||||
;;@ assembly/index.ts:28:33
|
||||
(get_local $5)
|
||||
)
|
||||
)
|
||||
;;@ assembly/index.ts:28:38
|
||||
(get_local $10)
|
||||
)
|
||||
)
|
||||
;;@ assembly/index.ts:29:6
|
||||
(set_local $5
|
||||
;;@ assembly/index.ts:29:11
|
||||
(f64.add
|
||||
(f64.mul
|
||||
(f64.mul
|
||||
(f64.const 2)
|
||||
;;@ assembly/index.ts:29:17
|
||||
(get_local $4)
|
||||
)
|
||||
;;@ assembly/index.ts:29:22
|
||||
(get_local $5)
|
||||
)
|
||||
;;@ assembly/index.ts:29:27
|
||||
(get_local $9)
|
||||
)
|
||||
)
|
||||
;;@ assembly/index.ts:30:6
|
||||
(set_local $4
|
||||
;;@ assembly/index.ts:30:11
|
||||
(get_local $8)
|
||||
)
|
||||
;;@ assembly/index.ts:27:71
|
||||
(set_local $6
|
||||
(i32.add
|
||||
;;@ assembly/index.ts:27:73
|
||||
(get_local $6)
|
||||
(i32.const 1)
|
||||
)
|
||||
)
|
||||
(br $continue|2)
|
||||
)
|
||||
)
|
||||
)
|
||||
;;@ assembly/index.ts:40:4
|
||||
(i32.store16
|
||||
;;@ assembly/index.ts:40:15
|
||||
(i32.shl
|
||||
;;@ assembly/index.ts:28:6
|
||||
(set_local $7
|
||||
;;@ assembly/index.ts:28:18
|
||||
(f64.add
|
||||
(f64.sub
|
||||
(f64.mul
|
||||
(get_local $4)
|
||||
(get_local $4)
|
||||
)
|
||||
;;@ assembly/index.ts:28:28
|
||||
(f64.mul
|
||||
(get_local $5)
|
||||
(get_local $5)
|
||||
)
|
||||
)
|
||||
(get_local $10)
|
||||
)
|
||||
)
|
||||
;;@ assembly/index.ts:29:6
|
||||
(set_local $5
|
||||
;;@ assembly/index.ts:29:11
|
||||
(f64.add
|
||||
(f64.mul
|
||||
(f64.mul
|
||||
(f64.const 2)
|
||||
(get_local $4)
|
||||
)
|
||||
(get_local $5)
|
||||
)
|
||||
(get_local $9)
|
||||
)
|
||||
)
|
||||
;;@ assembly/index.ts:30:6
|
||||
(set_local $4
|
||||
(get_local $7)
|
||||
)
|
||||
;;@ assembly/index.ts:27:71
|
||||
(set_local $2
|
||||
(i32.add
|
||||
;;@ assembly/index.ts:40:16
|
||||
(i32.mul
|
||||
(get_local $0)
|
||||
;;@ assembly/index.ts:40:20
|
||||
(get_local $1)
|
||||
)
|
||||
;;@ assembly/index.ts:40:28
|
||||
(get_local $2)
|
||||
(i32.const 1)
|
||||
)
|
||||
;;@ assembly/index.ts:40:34
|
||||
(i32.const 1)
|
||||
)
|
||||
(br $repeat|2)
|
||||
)
|
||||
)
|
||||
;;@ assembly/index.ts:40:4
|
||||
(i32.store16
|
||||
;;@ assembly/index.ts:40:15
|
||||
(i32.shl
|
||||
(i32.add
|
||||
;;@ assembly/index.ts:40:16
|
||||
(i32.mul
|
||||
(get_local $0)
|
||||
(get_local $1)
|
||||
)
|
||||
(get_local $8)
|
||||
)
|
||||
;;@ assembly/index.ts:40:34
|
||||
(i32.const 1)
|
||||
)
|
||||
(tee_local $2
|
||||
;;@ assembly/index.ts:37:15
|
||||
(if (result i32)
|
||||
(f64.eq
|
||||
(f64.sub
|
||||
(tee_local $8
|
||||
;;@ assembly/index.ts:36:4
|
||||
(tee_local $7
|
||||
;;@ assembly/index.ts:36:15
|
||||
(f64.div
|
||||
;;@ assembly/index.ts:36:20
|
||||
;;@ assembly/index.ts:36:4
|
||||
(tee_local $6
|
||||
;;@ assembly/index.ts:36:15
|
||||
(f64.div
|
||||
;;@ assembly/index.ts:36:20
|
||||
(call $~lib/math/JSMath.log
|
||||
;;@ assembly/index.ts:36:29
|
||||
(call $~lib/math/JSMath.log
|
||||
;;@ assembly/index.ts:36:29
|
||||
(call $~lib/math/JSMath.log
|
||||
;;@ assembly/index.ts:36:38
|
||||
(call $~lib/math/JSMath.sqrt
|
||||
;;@ assembly/index.ts:36:43
|
||||
(f64.add
|
||||
(f64.mul
|
||||
(get_local $4)
|
||||
;;@ assembly/index.ts:36:48
|
||||
(get_local $4)
|
||||
)
|
||||
;;@ assembly/index.ts:36:53
|
||||
(f64.mul
|
||||
(get_local $5)
|
||||
;;@ assembly/index.ts:36:58
|
||||
(get_local $5)
|
||||
)
|
||||
;;@ assembly/index.ts:36:38
|
||||
(call $~lib/math/JSMath.sqrt
|
||||
;;@ assembly/index.ts:36:43
|
||||
(f64.add
|
||||
(f64.mul
|
||||
(get_local $4)
|
||||
(get_local $4)
|
||||
)
|
||||
;;@ assembly/index.ts:36:53
|
||||
(f64.mul
|
||||
(get_local $5)
|
||||
(get_local $5)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
;;@ assembly/index.ts:36:66
|
||||
(get_global $~lib/math/JSMath.LN2)
|
||||
)
|
||||
;;@ assembly/index.ts:36:66
|
||||
(get_global $~lib/math/JSMath.LN2)
|
||||
)
|
||||
)
|
||||
(get_local $8)
|
||||
(get_local $6)
|
||||
)
|
||||
(f64.const 0)
|
||||
)
|
||||
@ -347,16 +320,14 @@
|
||||
(f64.convert_u/i32
|
||||
;;@ assembly/index.ts:38:40
|
||||
(i32.add
|
||||
(get_local $6)
|
||||
(get_local $2)
|
||||
;;@ assembly/index.ts:38:52
|
||||
(i32.const 1)
|
||||
)
|
||||
)
|
||||
;;@ assembly/index.ts:38:56
|
||||
(get_local $7)
|
||||
(get_local $6)
|
||||
)
|
||||
(f64.convert_u/i32
|
||||
;;@ assembly/index.ts:38:64
|
||||
(get_local $3)
|
||||
)
|
||||
)
|
||||
@ -366,20 +337,18 @@
|
||||
)
|
||||
)
|
||||
)
|
||||
;;@ assembly/index.ts:39:8
|
||||
(i32.const 2047)
|
||||
)
|
||||
)
|
||||
;;@ assembly/index.ts:12:34
|
||||
(set_local $2
|
||||
(i32.add
|
||||
;;@ assembly/index.ts:12:36
|
||||
(get_local $2)
|
||||
(i32.const 1)
|
||||
)
|
||||
)
|
||||
(br $continue|0)
|
||||
)
|
||||
;;@ assembly/index.ts:12:34
|
||||
(set_local $8
|
||||
(i32.add
|
||||
(get_local $8)
|
||||
(i32.const 1)
|
||||
)
|
||||
)
|
||||
(br $repeat|0)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
@ -12,35 +12,30 @@
|
||||
(export "computeLine" (func $assembly/index/computeLine))
|
||||
(export "memory" (memory $0))
|
||||
(func $isFinite<f64> (; 2 ;) (type $Fi) (param $0 f64) (result i32)
|
||||
;;@ ~lib/builtins.ts:21:44
|
||||
(return
|
||||
;;@ ~lib/builtins.ts:22:26
|
||||
(f64.eq
|
||||
;;@ ~lib/builtins.ts:22:9
|
||||
(f64.eq
|
||||
(f64.sub
|
||||
(get_local $0)
|
||||
;;@ ~lib/builtins.ts:22:17
|
||||
(get_local $0)
|
||||
)
|
||||
;;@ ~lib/builtins.ts:22:26
|
||||
(f64.const 0)
|
||||
(f64.sub
|
||||
(get_local $0)
|
||||
;;@ ~lib/builtins.ts:22:17
|
||||
(get_local $0)
|
||||
)
|
||||
;;@ ~lib/builtins.ts:22:26
|
||||
(f64.const 0)
|
||||
)
|
||||
)
|
||||
(func $assembly/index/clamp<f64> (; 3 ;) (type $FFFF) (param $0 f64) (param $1 f64) (param $2 f64) (result f64)
|
||||
;;@ assembly/index.ts:46:57
|
||||
(return
|
||||
;;@ assembly/index.ts:47:9
|
||||
(f64.min
|
||||
;;@ assembly/index.ts:47:13
|
||||
(f64.max
|
||||
;;@ assembly/index.ts:47:17
|
||||
(get_local $0)
|
||||
;;@ assembly/index.ts:47:24
|
||||
(get_local $1)
|
||||
)
|
||||
;;@ assembly/index.ts:47:35
|
||||
(get_local $2)
|
||||
;;@ assembly/index.ts:47:43
|
||||
(f64.min
|
||||
;;@ assembly/index.ts:47:13
|
||||
(f64.max
|
||||
;;@ assembly/index.ts:47:17
|
||||
(get_local $0)
|
||||
;;@ assembly/index.ts:47:24
|
||||
(get_local $1)
|
||||
)
|
||||
;;@ assembly/index.ts:47:35
|
||||
(get_local $2)
|
||||
)
|
||||
)
|
||||
(func $assembly/index/computeLine (; 4 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
|
||||
@ -129,340 +124,339 @@
|
||||
;;@ assembly/index.ts:12:20
|
||||
(i32.const 0)
|
||||
)
|
||||
(loop $continue|0
|
||||
(if
|
||||
;;@ assembly/index.ts:12:23
|
||||
(i32.lt_u
|
||||
(get_local $8)
|
||||
;;@ assembly/index.ts:12:27
|
||||
(get_local $1)
|
||||
(loop $repeat|0
|
||||
(br_if $break|0
|
||||
(i32.eqz
|
||||
;;@ assembly/index.ts:12:23
|
||||
(i32.lt_u
|
||||
(get_local $8)
|
||||
;;@ assembly/index.ts:12:27
|
||||
(get_local $1)
|
||||
)
|
||||
)
|
||||
(block
|
||||
(block
|
||||
;;@ assembly/index.ts:13:4
|
||||
(set_local $9
|
||||
;;@ assembly/index.ts:13:15
|
||||
(f64.mul
|
||||
(f64.sub
|
||||
(f64.convert_u/i32
|
||||
;;@ assembly/index.ts:13:16
|
||||
(get_local $8)
|
||||
)
|
||||
;;@ assembly/index.ts:13:20
|
||||
(get_local $4)
|
||||
)
|
||||
;;@ assembly/index.ts:13:34
|
||||
(get_local $6)
|
||||
)
|
||||
;;@ assembly/index.ts:12:39
|
||||
(block
|
||||
;;@ assembly/index.ts:13:4
|
||||
(set_local $9
|
||||
;;@ assembly/index.ts:13:15
|
||||
(f64.mul
|
||||
(f64.sub
|
||||
(f64.convert_u/i32
|
||||
;;@ assembly/index.ts:13:16
|
||||
(get_local $8)
|
||||
)
|
||||
;;@ assembly/index.ts:13:20
|
||||
(get_local $4)
|
||||
)
|
||||
;;@ assembly/index.ts:16:4
|
||||
(block
|
||||
(set_local $10
|
||||
;;@ assembly/index.ts:16:13
|
||||
(f64.const 0)
|
||||
)
|
||||
(set_local $11
|
||||
;;@ assembly/index.ts:16:23
|
||||
(f64.const 0)
|
||||
)
|
||||
)
|
||||
;;@ assembly/index.ts:17:4
|
||||
(set_local $14
|
||||
;;@ assembly/index.ts:17:25
|
||||
(i32.const 0)
|
||||
)
|
||||
;;@ assembly/index.ts:18:4
|
||||
(block $break|1
|
||||
(loop $continue|1
|
||||
(if
|
||||
;;@ assembly/index.ts:18:11
|
||||
(f64.le
|
||||
(f64.add
|
||||
(tee_local $12
|
||||
;;@ assembly/index.ts:18:19
|
||||
(f64.mul
|
||||
(get_local $10)
|
||||
;;@ assembly/index.ts:18:24
|
||||
(get_local $10)
|
||||
)
|
||||
)
|
||||
;;@ assembly/index.ts:18:30
|
||||
(tee_local $13
|
||||
;;@ assembly/index.ts:18:38
|
||||
(f64.mul
|
||||
(get_local $11)
|
||||
;;@ assembly/index.ts:18:43
|
||||
(get_local $11)
|
||||
)
|
||||
)
|
||||
;;@ assembly/index.ts:13:34
|
||||
(get_local $6)
|
||||
)
|
||||
)
|
||||
(set_local $10
|
||||
;;@ assembly/index.ts:16:13
|
||||
(f64.const 0)
|
||||
)
|
||||
(set_local $11
|
||||
;;@ assembly/index.ts:16:23
|
||||
(f64.const 0)
|
||||
)
|
||||
;;@ assembly/index.ts:17:4
|
||||
(set_local $14
|
||||
;;@ assembly/index.ts:17:25
|
||||
(i32.const 0)
|
||||
)
|
||||
;;@ assembly/index.ts:18:4
|
||||
(block $break|1
|
||||
(loop $continue|1
|
||||
(if
|
||||
;;@ assembly/index.ts:18:11
|
||||
(f64.le
|
||||
(f64.add
|
||||
(tee_local $12
|
||||
;;@ assembly/index.ts:18:19
|
||||
(f64.mul
|
||||
(get_local $10)
|
||||
;;@ assembly/index.ts:18:24
|
||||
(get_local $10)
|
||||
)
|
||||
;;@ assembly/index.ts:18:50
|
||||
(f64.const 4)
|
||||
)
|
||||
(block
|
||||
(block
|
||||
;;@ assembly/index.ts:19:6
|
||||
(set_local $15
|
||||
;;@ assembly/index.ts:19:18
|
||||
(f64.add
|
||||
(f64.sub
|
||||
(get_local $12)
|
||||
;;@ assembly/index.ts:19:25
|
||||
(get_local $13)
|
||||
)
|
||||
;;@ assembly/index.ts:19:32
|
||||
(get_local $9)
|
||||
;;@ assembly/index.ts:18:30
|
||||
(tee_local $13
|
||||
;;@ assembly/index.ts:18:38
|
||||
(f64.mul
|
||||
(get_local $11)
|
||||
;;@ assembly/index.ts:18:43
|
||||
(get_local $11)
|
||||
)
|
||||
)
|
||||
)
|
||||
;;@ assembly/index.ts:18:50
|
||||
(f64.const 4)
|
||||
)
|
||||
(block
|
||||
(block
|
||||
;;@ assembly/index.ts:19:6
|
||||
(set_local $15
|
||||
;;@ assembly/index.ts:19:18
|
||||
(f64.add
|
||||
(f64.sub
|
||||
(get_local $12)
|
||||
;;@ assembly/index.ts:19:25
|
||||
(get_local $13)
|
||||
)
|
||||
;;@ assembly/index.ts:19:32
|
||||
(get_local $9)
|
||||
)
|
||||
)
|
||||
;;@ assembly/index.ts:20:6
|
||||
(set_local $11
|
||||
;;@ assembly/index.ts:20:11
|
||||
(f64.add
|
||||
(f64.mul
|
||||
(f64.mul
|
||||
(f64.const 2)
|
||||
;;@ assembly/index.ts:20:17
|
||||
(get_local $10)
|
||||
)
|
||||
;;@ assembly/index.ts:20:22
|
||||
(get_local $11)
|
||||
)
|
||||
;;@ assembly/index.ts:20:6
|
||||
(set_local $11
|
||||
;;@ assembly/index.ts:20:11
|
||||
(f64.add
|
||||
(f64.mul
|
||||
(f64.mul
|
||||
(f64.const 2)
|
||||
;;@ assembly/index.ts:20:17
|
||||
(get_local $10)
|
||||
)
|
||||
;;@ assembly/index.ts:20:22
|
||||
(get_local $11)
|
||||
)
|
||||
;;@ assembly/index.ts:20:27
|
||||
(get_local $7)
|
||||
)
|
||||
)
|
||||
;;@ assembly/index.ts:21:6
|
||||
(set_local $10
|
||||
;;@ assembly/index.ts:21:11
|
||||
(get_local $15)
|
||||
)
|
||||
;;@ assembly/index.ts:22:6
|
||||
(if
|
||||
;;@ assembly/index.ts:22:10
|
||||
(i32.ge_u
|
||||
(get_local $14)
|
||||
;;@ assembly/index.ts:22:23
|
||||
(get_local $3)
|
||||
)
|
||||
;;@ assembly/index.ts:22:30
|
||||
(br $break|1)
|
||||
)
|
||||
;;@ assembly/index.ts:23:6
|
||||
(set_local $14
|
||||
;;@ assembly/index.ts:20:27
|
||||
(get_local $7)
|
||||
)
|
||||
)
|
||||
;;@ assembly/index.ts:21:6
|
||||
(set_local $10
|
||||
;;@ assembly/index.ts:21:11
|
||||
(get_local $15)
|
||||
)
|
||||
;;@ assembly/index.ts:22:6
|
||||
(if
|
||||
;;@ assembly/index.ts:22:10
|
||||
(i32.ge_u
|
||||
(get_local $14)
|
||||
;;@ assembly/index.ts:22:23
|
||||
(get_local $3)
|
||||
)
|
||||
;;@ assembly/index.ts:22:30
|
||||
(br $break|1)
|
||||
)
|
||||
;;@ assembly/index.ts:23:6
|
||||
(set_local $14
|
||||
(i32.add
|
||||
;;@ assembly/index.ts:23:8
|
||||
(get_local $14)
|
||||
(i32.const 1)
|
||||
)
|
||||
)
|
||||
)
|
||||
(br $continue|1)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
;;@ assembly/index.ts:27:4
|
||||
(block $break|2
|
||||
;;@ assembly/index.ts:27:9
|
||||
(set_local $15
|
||||
;;@ assembly/index.ts:27:29
|
||||
(f64.min
|
||||
;;@ assembly/index.ts:27:33
|
||||
(f64.const 8)
|
||||
;;@ assembly/index.ts:27:36
|
||||
(f64.convert_u/i32
|
||||
(get_local $3)
|
||||
)
|
||||
)
|
||||
)
|
||||
(loop $repeat|2
|
||||
(br_if $break|2
|
||||
(i32.eqz
|
||||
;;@ assembly/index.ts:27:44
|
||||
(f64.lt
|
||||
(f64.convert_u/i32
|
||||
(get_local $14)
|
||||
)
|
||||
;;@ assembly/index.ts:27:56
|
||||
(get_local $15)
|
||||
)
|
||||
)
|
||||
)
|
||||
;;@ assembly/index.ts:27:84
|
||||
(block
|
||||
;;@ assembly/index.ts:28:6
|
||||
(set_local $16
|
||||
;;@ assembly/index.ts:28:18
|
||||
(f64.add
|
||||
(f64.sub
|
||||
(f64.mul
|
||||
(get_local $10)
|
||||
;;@ assembly/index.ts:28:23
|
||||
(get_local $10)
|
||||
)
|
||||
;;@ assembly/index.ts:28:28
|
||||
(f64.mul
|
||||
(get_local $11)
|
||||
;;@ assembly/index.ts:28:33
|
||||
(get_local $11)
|
||||
)
|
||||
)
|
||||
;;@ assembly/index.ts:28:38
|
||||
(get_local $9)
|
||||
)
|
||||
)
|
||||
;;@ assembly/index.ts:29:6
|
||||
(set_local $11
|
||||
;;@ assembly/index.ts:29:11
|
||||
(f64.add
|
||||
(f64.mul
|
||||
(f64.mul
|
||||
(f64.const 2)
|
||||
;;@ assembly/index.ts:29:17
|
||||
(get_local $10)
|
||||
)
|
||||
;;@ assembly/index.ts:29:22
|
||||
(get_local $11)
|
||||
)
|
||||
;;@ assembly/index.ts:29:27
|
||||
(get_local $7)
|
||||
)
|
||||
)
|
||||
;;@ assembly/index.ts:30:6
|
||||
(set_local $10
|
||||
;;@ assembly/index.ts:30:11
|
||||
(get_local $16)
|
||||
)
|
||||
)
|
||||
;;@ assembly/index.ts:27:71
|
||||
(set_local $14
|
||||
(i32.add
|
||||
;;@ assembly/index.ts:27:73
|
||||
(get_local $14)
|
||||
(i32.const 1)
|
||||
)
|
||||
)
|
||||
(br $repeat|2)
|
||||
)
|
||||
)
|
||||
;;@ assembly/index.ts:36:4
|
||||
(set_local $15
|
||||
;;@ assembly/index.ts:36:15
|
||||
(f64.div
|
||||
;;@ assembly/index.ts:36:20
|
||||
(call $~lib/math/JSMath.log
|
||||
;;@ assembly/index.ts:36:29
|
||||
(call $~lib/math/JSMath.log
|
||||
;;@ assembly/index.ts:36:38
|
||||
(call $~lib/math/JSMath.sqrt
|
||||
;;@ assembly/index.ts:36:43
|
||||
(f64.add
|
||||
(f64.mul
|
||||
(get_local $10)
|
||||
;;@ assembly/index.ts:36:48
|
||||
(get_local $10)
|
||||
)
|
||||
;;@ assembly/index.ts:36:53
|
||||
(f64.mul
|
||||
(get_local $11)
|
||||
;;@ assembly/index.ts:36:58
|
||||
(get_local $11)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
;;@ assembly/index.ts:36:66
|
||||
(get_global $~lib/math/JSMath.LN2)
|
||||
)
|
||||
)
|
||||
;;@ assembly/index.ts:37:4
|
||||
(set_local $17
|
||||
;;@ assembly/index.ts:37:15
|
||||
(if (result i32)
|
||||
(call $isFinite<f64>
|
||||
;;@ assembly/index.ts:37:24
|
||||
(get_local $15)
|
||||
)
|
||||
;;@ assembly/index.ts:38:8
|
||||
(i32.trunc_u/f64
|
||||
;;@ assembly/index.ts:38:14
|
||||
(f64.mul
|
||||
(f64.convert_s/i32
|
||||
(i32.sub
|
||||
;;@ assembly/index.ts:38:15
|
||||
(i32.const 2048)
|
||||
;;@ assembly/index.ts:38:28
|
||||
(i32.const 1)
|
||||
)
|
||||
)
|
||||
;;@ assembly/index.ts:38:33
|
||||
(call $assembly/index/clamp<f64>
|
||||
;;@ assembly/index.ts:38:39
|
||||
(f64.div
|
||||
(f64.sub
|
||||
(f64.convert_u/i32
|
||||
;;@ assembly/index.ts:38:40
|
||||
(i32.add
|
||||
;;@ assembly/index.ts:23:8
|
||||
(get_local $14)
|
||||
;;@ assembly/index.ts:38:52
|
||||
(i32.const 1)
|
||||
)
|
||||
)
|
||||
;;@ assembly/index.ts:38:56
|
||||
(get_local $15)
|
||||
)
|
||||
(br $continue|1)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
;;@ assembly/index.ts:27:4
|
||||
(block $break|2
|
||||
;;@ assembly/index.ts:27:9
|
||||
(set_local $15
|
||||
;;@ assembly/index.ts:27:29
|
||||
(f64.min
|
||||
;;@ assembly/index.ts:27:33
|
||||
(f64.const 8)
|
||||
;;@ assembly/index.ts:27:36
|
||||
(f64.convert_u/i32
|
||||
(get_local $3)
|
||||
)
|
||||
)
|
||||
)
|
||||
(loop $continue|2
|
||||
(if
|
||||
;;@ assembly/index.ts:27:44
|
||||
(f64.lt
|
||||
(f64.convert_u/i32
|
||||
(get_local $14)
|
||||
;;@ assembly/index.ts:38:64
|
||||
(get_local $3)
|
||||
)
|
||||
;;@ assembly/index.ts:27:56
|
||||
(get_local $15)
|
||||
)
|
||||
(block
|
||||
(block
|
||||
;;@ assembly/index.ts:28:6
|
||||
(set_local $16
|
||||
;;@ assembly/index.ts:28:18
|
||||
(f64.add
|
||||
(f64.sub
|
||||
(f64.mul
|
||||
(get_local $10)
|
||||
;;@ assembly/index.ts:28:23
|
||||
(get_local $10)
|
||||
)
|
||||
;;@ assembly/index.ts:28:28
|
||||
(f64.mul
|
||||
(get_local $11)
|
||||
;;@ assembly/index.ts:28:33
|
||||
(get_local $11)
|
||||
)
|
||||
)
|
||||
;;@ assembly/index.ts:28:38
|
||||
(get_local $9)
|
||||
)
|
||||
)
|
||||
;;@ assembly/index.ts:29:6
|
||||
(set_local $11
|
||||
;;@ assembly/index.ts:29:11
|
||||
(f64.add
|
||||
(f64.mul
|
||||
(f64.mul
|
||||
(f64.const 2)
|
||||
;;@ assembly/index.ts:29:17
|
||||
(get_local $10)
|
||||
)
|
||||
;;@ assembly/index.ts:29:22
|
||||
(get_local $11)
|
||||
)
|
||||
;;@ assembly/index.ts:29:27
|
||||
(get_local $7)
|
||||
)
|
||||
)
|
||||
;;@ assembly/index.ts:30:6
|
||||
(set_local $10
|
||||
;;@ assembly/index.ts:30:11
|
||||
(get_local $16)
|
||||
)
|
||||
)
|
||||
;;@ assembly/index.ts:27:71
|
||||
(set_local $14
|
||||
(i32.add
|
||||
;;@ assembly/index.ts:27:73
|
||||
(get_local $14)
|
||||
(i32.const 1)
|
||||
)
|
||||
)
|
||||
(br $continue|2)
|
||||
)
|
||||
;;@ assembly/index.ts:38:71
|
||||
(f64.const 0)
|
||||
;;@ assembly/index.ts:38:76
|
||||
(f64.const 1)
|
||||
)
|
||||
)
|
||||
)
|
||||
;;@ assembly/index.ts:36:4
|
||||
(set_local $15
|
||||
;;@ assembly/index.ts:36:15
|
||||
(f64.div
|
||||
;;@ assembly/index.ts:36:20
|
||||
(call $~lib/math/JSMath.log
|
||||
;;@ assembly/index.ts:36:29
|
||||
(call $~lib/math/JSMath.log
|
||||
;;@ assembly/index.ts:36:38
|
||||
(call $~lib/math/JSMath.sqrt
|
||||
;;@ assembly/index.ts:36:43
|
||||
(f64.add
|
||||
(f64.mul
|
||||
(get_local $10)
|
||||
;;@ assembly/index.ts:36:48
|
||||
(get_local $10)
|
||||
)
|
||||
;;@ assembly/index.ts:36:53
|
||||
(f64.mul
|
||||
(get_local $11)
|
||||
;;@ assembly/index.ts:36:58
|
||||
(get_local $11)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
;;@ assembly/index.ts:36:66
|
||||
(get_global $~lib/math/JSMath.LN2)
|
||||
)
|
||||
)
|
||||
;;@ assembly/index.ts:37:4
|
||||
(set_local $17
|
||||
;;@ assembly/index.ts:37:15
|
||||
(if (result i32)
|
||||
(call $isFinite<f64>
|
||||
;;@ assembly/index.ts:37:24
|
||||
(get_local $15)
|
||||
)
|
||||
;;@ assembly/index.ts:38:8
|
||||
(i32.trunc_u/f64
|
||||
;;@ assembly/index.ts:38:14
|
||||
(f64.mul
|
||||
(f64.convert_s/i32
|
||||
(i32.sub
|
||||
;;@ assembly/index.ts:38:15
|
||||
(i32.const 2048)
|
||||
;;@ assembly/index.ts:38:28
|
||||
(i32.const 1)
|
||||
)
|
||||
)
|
||||
;;@ assembly/index.ts:38:33
|
||||
(call $assembly/index/clamp<f64>
|
||||
;;@ assembly/index.ts:38:39
|
||||
(f64.div
|
||||
(f64.sub
|
||||
(f64.convert_u/i32
|
||||
;;@ assembly/index.ts:38:40
|
||||
(i32.add
|
||||
(get_local $14)
|
||||
;;@ assembly/index.ts:38:52
|
||||
(i32.const 1)
|
||||
)
|
||||
)
|
||||
;;@ assembly/index.ts:38:56
|
||||
(get_local $15)
|
||||
)
|
||||
(f64.convert_u/i32
|
||||
;;@ assembly/index.ts:38:64
|
||||
(get_local $3)
|
||||
)
|
||||
)
|
||||
;;@ assembly/index.ts:38:71
|
||||
(f64.const 0)
|
||||
;;@ assembly/index.ts:38:76
|
||||
(f64.const 1)
|
||||
)
|
||||
)
|
||||
)
|
||||
;;@ assembly/index.ts:39:8
|
||||
(i32.sub
|
||||
(i32.const 2048)
|
||||
;;@ assembly/index.ts:39:21
|
||||
(i32.const 1)
|
||||
)
|
||||
)
|
||||
)
|
||||
;;@ assembly/index.ts:40:4
|
||||
(i32.store16
|
||||
;;@ assembly/index.ts:40:15
|
||||
(i32.shl
|
||||
(i32.add
|
||||
;;@ assembly/index.ts:40:16
|
||||
(i32.mul
|
||||
(get_local $0)
|
||||
;;@ assembly/index.ts:40:20
|
||||
(get_local $1)
|
||||
)
|
||||
;;@ assembly/index.ts:40:28
|
||||
(get_local $8)
|
||||
)
|
||||
;;@ assembly/index.ts:40:34
|
||||
(i32.const 1)
|
||||
)
|
||||
;;@ assembly/index.ts:40:37
|
||||
(get_local $17)
|
||||
)
|
||||
)
|
||||
;;@ assembly/index.ts:12:34
|
||||
(set_local $8
|
||||
(i32.add
|
||||
;;@ assembly/index.ts:12:36
|
||||
(get_local $8)
|
||||
;;@ assembly/index.ts:39:8
|
||||
(i32.sub
|
||||
(i32.const 2048)
|
||||
;;@ assembly/index.ts:39:21
|
||||
(i32.const 1)
|
||||
)
|
||||
)
|
||||
(br $continue|0)
|
||||
)
|
||||
;;@ assembly/index.ts:40:4
|
||||
(i32.store16
|
||||
;;@ assembly/index.ts:40:15
|
||||
(i32.shl
|
||||
(i32.add
|
||||
;;@ assembly/index.ts:40:16
|
||||
(i32.mul
|
||||
(get_local $0)
|
||||
;;@ assembly/index.ts:40:20
|
||||
(get_local $1)
|
||||
)
|
||||
;;@ assembly/index.ts:40:28
|
||||
(get_local $8)
|
||||
)
|
||||
;;@ assembly/index.ts:40:34
|
||||
(i32.const 1)
|
||||
)
|
||||
;;@ assembly/index.ts:40:37
|
||||
(get_local $17)
|
||||
)
|
||||
)
|
||||
;;@ assembly/index.ts:12:34
|
||||
(set_local $8
|
||||
(i32.add
|
||||
;;@ assembly/index.ts:12:36
|
||||
(get_local $8)
|
||||
(i32.const 1)
|
||||
)
|
||||
)
|
||||
(br $repeat|0)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
@ -192,8 +192,6 @@
|
||||
)
|
||||
(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:21:4
|
||||
(nop)
|
||||
(tee_local $0
|
||||
(if (result i32)
|
||||
(get_local $0)
|
||||
@ -240,7 +238,7 @@
|
||||
)
|
||||
)
|
||||
(func $assembly/index/Sun (; 3 ;) (type $i) (result i32)
|
||||
;;@ assembly/index.ts:31:21
|
||||
;;@ assembly/index.ts:34:2
|
||||
(call $assembly/index/Body#constructor
|
||||
(i32.const 0)
|
||||
;;@ assembly/index.ts:33:4
|
||||
@ -260,7 +258,7 @@
|
||||
)
|
||||
)
|
||||
(func $assembly/index/Jupiter (; 4 ;) (type $i) (result i32)
|
||||
;;@ assembly/index.ts:37:25
|
||||
;;@ assembly/index.ts:46:2
|
||||
(call $assembly/index/Body#constructor
|
||||
(i32.const 0)
|
||||
;;@ assembly/index.ts:39:4
|
||||
@ -296,7 +294,7 @@
|
||||
)
|
||||
)
|
||||
(func $assembly/index/Saturn (; 5 ;) (type $i) (result i32)
|
||||
;;@ assembly/index.ts:49:24
|
||||
;;@ assembly/index.ts:58:2
|
||||
(call $assembly/index/Body#constructor
|
||||
(i32.const 0)
|
||||
;;@ assembly/index.ts:51:4
|
||||
@ -332,7 +330,7 @@
|
||||
)
|
||||
)
|
||||
(func $assembly/index/Uranus (; 6 ;) (type $i) (result i32)
|
||||
;;@ assembly/index.ts:61:24
|
||||
;;@ assembly/index.ts:70:2
|
||||
(call $assembly/index/Body#constructor
|
||||
(i32.const 0)
|
||||
;;@ assembly/index.ts:63:4
|
||||
@ -368,7 +366,7 @@
|
||||
)
|
||||
)
|
||||
(func $assembly/index/Neptune (; 7 ;) (type $i) (result i32)
|
||||
;;@ assembly/index.ts:73:25
|
||||
;;@ assembly/index.ts:82:2
|
||||
(call $assembly/index/Body#constructor
|
||||
(i32.const 0)
|
||||
;;@ assembly/index.ts:75:4
|
||||
@ -404,7 +402,7 @@
|
||||
)
|
||||
)
|
||||
(func $~lib/internal/arraybuffer/computeSize (; 8 ;) (type $ii) (param $0 i32) (result i32)
|
||||
;;@ ~lib/internal/arraybuffer.ts:10:52
|
||||
;;@ ~lib/internal/arraybuffer.ts:17:77
|
||||
(i32.shl
|
||||
;;@ ~lib/internal/arraybuffer.ts:17:9
|
||||
(i32.const 1)
|
||||
@ -998,98 +996,95 @@
|
||||
(local $2 i32)
|
||||
(local $3 i32)
|
||||
(local $4 i32)
|
||||
;;@ ~lib/array.ts:21:31
|
||||
(block
|
||||
;;@ ~lib/array.ts:23:4
|
||||
(if
|
||||
;;@ ~lib/array.ts:23:8
|
||||
(i32.gt_u
|
||||
(get_local $1)
|
||||
;;@ ~lib/array.ts:23:22
|
||||
(i32.const 268435454)
|
||||
)
|
||||
;;@ ~lib/array.ts:23:39
|
||||
(block
|
||||
(call $~lib/env/abort
|
||||
(i32.const 0)
|
||||
(i32.const 8)
|
||||
(i32.const 23)
|
||||
(i32.const 39)
|
||||
)
|
||||
(unreachable)
|
||||
)
|
||||
;;@ ~lib/array.ts:23:4
|
||||
(if
|
||||
;;@ ~lib/array.ts:23:8
|
||||
(i32.gt_u
|
||||
(get_local $1)
|
||||
;;@ ~lib/array.ts:23:22
|
||||
(i32.const 268435454)
|
||||
)
|
||||
;;@ ~lib/array.ts:24:4
|
||||
(set_local $2
|
||||
;;@ ~lib/array.ts:24:21
|
||||
(i32.shl
|
||||
(get_local $1)
|
||||
;;@ ~lib/array.ts:24:31
|
||||
(i32.const 2)
|
||||
;;@ ~lib/array.ts:23:39
|
||||
(block
|
||||
(call $~lib/env/abort
|
||||
(i32.const 0)
|
||||
(i32.const 8)
|
||||
(i32.const 23)
|
||||
(i32.const 39)
|
||||
)
|
||||
(unreachable)
|
||||
)
|
||||
;;@ ~lib/array.ts:25:4
|
||||
(set_local $3
|
||||
;;@ ~lib/array.ts:25:17
|
||||
(call $~lib/internal/arraybuffer/allocUnsafe
|
||||
;;@ ~lib/array.ts:25:29
|
||||
(get_local $2)
|
||||
)
|
||||
)
|
||||
;;@ ~lib/array.ts:24:4
|
||||
(set_local $2
|
||||
;;@ ~lib/array.ts:24:21
|
||||
(i32.shl
|
||||
(get_local $1)
|
||||
;;@ ~lib/array.ts:24:31
|
||||
(i32.const 2)
|
||||
)
|
||||
;;@ ~lib/array.ts:26:4
|
||||
(i32.store
|
||||
(tee_local $0
|
||||
(if (result i32)
|
||||
(get_local $0)
|
||||
(get_local $0)
|
||||
(tee_local $0
|
||||
(block (result i32)
|
||||
(set_local $4
|
||||
(call $~lib/allocator/arena/allocate_memory
|
||||
(i32.const 8)
|
||||
)
|
||||
)
|
||||
;;@ ~lib/array.ts:25:4
|
||||
(set_local $3
|
||||
;;@ ~lib/array.ts:25:17
|
||||
(call $~lib/internal/arraybuffer/allocUnsafe
|
||||
;;@ ~lib/array.ts:25:29
|
||||
(get_local $2)
|
||||
)
|
||||
)
|
||||
;;@ ~lib/array.ts:26:4
|
||||
(i32.store
|
||||
(tee_local $0
|
||||
(if (result i32)
|
||||
(get_local $0)
|
||||
(get_local $0)
|
||||
(tee_local $0
|
||||
(block (result i32)
|
||||
(set_local $4
|
||||
(call $~lib/allocator/arena/allocate_memory
|
||||
(i32.const 8)
|
||||
)
|
||||
(i32.store
|
||||
(get_local $4)
|
||||
(i32.const 0)
|
||||
)
|
||||
(i32.store offset=4
|
||||
(get_local $4)
|
||||
(i32.const 0)
|
||||
)
|
||||
(get_local $4)
|
||||
)
|
||||
(i32.store
|
||||
(get_local $4)
|
||||
(i32.const 0)
|
||||
)
|
||||
(i32.store offset=4
|
||||
(get_local $4)
|
||||
(i32.const 0)
|
||||
)
|
||||
(get_local $4)
|
||||
)
|
||||
)
|
||||
)
|
||||
;;@ ~lib/array.ts:26:19
|
||||
)
|
||||
;;@ ~lib/array.ts:26:19
|
||||
(get_local $3)
|
||||
)
|
||||
;;@ ~lib/array.ts:27:4
|
||||
(i32.store offset=4
|
||||
(get_local $0)
|
||||
;;@ ~lib/array.ts:27:19
|
||||
(get_local $1)
|
||||
)
|
||||
;;@ ~lib/array.ts:28:4
|
||||
(call $~lib/memory/set_memory
|
||||
;;@ ~lib/array.ts:29:6
|
||||
(i32.add
|
||||
(get_local $3)
|
||||
;;@ ~lib/array.ts:29:34
|
||||
(i32.const 8)
|
||||
)
|
||||
;;@ ~lib/array.ts:27:4
|
||||
(i32.store offset=4
|
||||
(get_local $0)
|
||||
;;@ ~lib/array.ts:27:19
|
||||
(get_local $1)
|
||||
)
|
||||
;;@ ~lib/array.ts:28:4
|
||||
(call $~lib/memory/set_memory
|
||||
;;@ ~lib/array.ts:29:6
|
||||
(i32.add
|
||||
(get_local $3)
|
||||
;;@ ~lib/array.ts:29:34
|
||||
(i32.const 8)
|
||||
)
|
||||
;;@ ~lib/array.ts:30:6
|
||||
(i32.const 0)
|
||||
;;@ ~lib/array.ts:31:6
|
||||
(get_local $2)
|
||||
)
|
||||
;;@ ~lib/array.ts:30:6
|
||||
(i32.const 0)
|
||||
;;@ ~lib/array.ts:31:6
|
||||
(get_local $2)
|
||||
)
|
||||
(get_local $0)
|
||||
)
|
||||
(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:95:54
|
||||
;;@ ~lib/array.ts:96:4
|
||||
(block $~lib/internal/arraybuffer/storeUnsafe<Body,Body>|inlined.0
|
||||
(set_local $3
|
||||
;;@ ~lib/array.ts:96:21
|
||||
@ -1116,7 +1111,7 @@
|
||||
)
|
||||
)
|
||||
(func $~lib/array/Array<Body>#get:length (; 13 ;) (type $ii) (param $0 i32) (result i32)
|
||||
;;@ ~lib/array.ts:35:20
|
||||
;;@ ~lib/array.ts:36:16
|
||||
(i32.load offset=4
|
||||
;;@ ~lib/array.ts:36:11
|
||||
(get_local $0)
|
||||
@ -1124,7 +1119,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:76:41
|
||||
;;@ ~lib/array.ts:77:46
|
||||
(block $~lib/internal/arraybuffer/loadUnsafe<Body,Body>|inlined.0 (result i32)
|
||||
(set_local $2
|
||||
;;@ ~lib/array.ts:77:27
|
||||
@ -1244,136 +1239,133 @@
|
||||
(local $6 i32)
|
||||
(local $7 i32)
|
||||
(local $8 f64)
|
||||
;;@ assembly/index.ts:89:4
|
||||
(block
|
||||
;;@ assembly/index.ts:90:4
|
||||
(set_local $2
|
||||
;;@ assembly/index.ts:90:20
|
||||
(f64.const 0)
|
||||
;;@ assembly/index.ts:90:4
|
||||
(set_local $2
|
||||
;;@ assembly/index.ts:90:20
|
||||
(f64.const 0)
|
||||
)
|
||||
;;@ assembly/index.ts:91:4
|
||||
(set_local $3
|
||||
;;@ assembly/index.ts:91:20
|
||||
(f64.const 0)
|
||||
)
|
||||
;;@ assembly/index.ts:92:4
|
||||
(set_local $4
|
||||
;;@ assembly/index.ts:92:20
|
||||
(f64.const 0)
|
||||
)
|
||||
;;@ assembly/index.ts:93:4
|
||||
(set_local $5
|
||||
;;@ assembly/index.ts:93:15
|
||||
(call $~lib/array/Array<Body>#get:length
|
||||
(get_local $1)
|
||||
)
|
||||
;;@ assembly/index.ts:91:4
|
||||
(set_local $3
|
||||
;;@ assembly/index.ts:91:20
|
||||
(f64.const 0)
|
||||
)
|
||||
;;@ assembly/index.ts:94:4
|
||||
(block $break|0
|
||||
;;@ assembly/index.ts:94:9
|
||||
(set_local $6
|
||||
;;@ assembly/index.ts:94:17
|
||||
(i32.const 0)
|
||||
)
|
||||
;;@ assembly/index.ts:92:4
|
||||
(set_local $4
|
||||
;;@ assembly/index.ts:92:20
|
||||
(f64.const 0)
|
||||
)
|
||||
;;@ assembly/index.ts:93:4
|
||||
(set_local $5
|
||||
;;@ assembly/index.ts:93:15
|
||||
(call $~lib/array/Array<Body>#get:length
|
||||
(get_local $1)
|
||||
(loop $repeat|0
|
||||
(br_if $break|0
|
||||
(i32.eqz
|
||||
;;@ assembly/index.ts:94:20
|
||||
(i32.lt_s
|
||||
(get_local $6)
|
||||
;;@ assembly/index.ts:94:24
|
||||
(get_local $5)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
;;@ assembly/index.ts:94:4
|
||||
(block $break|0
|
||||
;;@ assembly/index.ts:94:9
|
||||
;;@ assembly/index.ts:94:35
|
||||
(block
|
||||
;;@ assembly/index.ts:95:6
|
||||
(set_local $7
|
||||
;;@ assembly/index.ts:95:14
|
||||
(call $~lib/array/Array<Body>#__unchecked_get
|
||||
;;@ assembly/index.ts:95:24
|
||||
(get_local $1)
|
||||
;;@ assembly/index.ts:95:31
|
||||
(get_local $6)
|
||||
)
|
||||
)
|
||||
;;@ assembly/index.ts:96:6
|
||||
(set_local $8
|
||||
;;@ assembly/index.ts:96:14
|
||||
(f64.load offset=48
|
||||
(get_local $7)
|
||||
)
|
||||
)
|
||||
;;@ assembly/index.ts:97:6
|
||||
(set_local $2
|
||||
(f64.add
|
||||
(get_local $2)
|
||||
;;@ assembly/index.ts:97:12
|
||||
(f64.mul
|
||||
(f64.load offset=24
|
||||
(get_local $7)
|
||||
)
|
||||
;;@ assembly/index.ts:97:19
|
||||
(get_local $8)
|
||||
)
|
||||
)
|
||||
)
|
||||
;;@ assembly/index.ts:98:6
|
||||
(set_local $3
|
||||
(f64.add
|
||||
(get_local $3)
|
||||
;;@ assembly/index.ts:98:12
|
||||
(f64.mul
|
||||
(f64.load offset=32
|
||||
(get_local $7)
|
||||
)
|
||||
;;@ assembly/index.ts:98:19
|
||||
(get_local $8)
|
||||
)
|
||||
)
|
||||
)
|
||||
;;@ assembly/index.ts:99:6
|
||||
(set_local $4
|
||||
(f64.add
|
||||
(get_local $4)
|
||||
;;@ assembly/index.ts:99:12
|
||||
(f64.mul
|
||||
(f64.load offset=40
|
||||
(get_local $7)
|
||||
)
|
||||
;;@ assembly/index.ts:99:19
|
||||
(get_local $8)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
;;@ assembly/index.ts:94:30
|
||||
(set_local $6
|
||||
;;@ assembly/index.ts:94:17
|
||||
(i32.add
|
||||
(get_local $6)
|
||||
(i32.const 1)
|
||||
)
|
||||
)
|
||||
(br $repeat|0)
|
||||
)
|
||||
)
|
||||
;;@ assembly/index.ts:101:14
|
||||
(drop
|
||||
(call $assembly/index/Body#offsetMomentum
|
||||
;;@ assembly/index.ts:101:4
|
||||
(call $~lib/array/Array<Body>#__get
|
||||
(get_local $1)
|
||||
;;@ assembly/index.ts:101:11
|
||||
(i32.const 0)
|
||||
)
|
||||
(loop $repeat|0
|
||||
(br_if $break|0
|
||||
(i32.eqz
|
||||
;;@ assembly/index.ts:94:20
|
||||
(i32.lt_s
|
||||
(get_local $6)
|
||||
;;@ assembly/index.ts:94:24
|
||||
(get_local $5)
|
||||
)
|
||||
)
|
||||
)
|
||||
;;@ assembly/index.ts:94:35
|
||||
(block
|
||||
;;@ assembly/index.ts:95:6
|
||||
(set_local $7
|
||||
;;@ assembly/index.ts:95:14
|
||||
(call $~lib/array/Array<Body>#__unchecked_get
|
||||
;;@ assembly/index.ts:95:24
|
||||
(get_local $1)
|
||||
;;@ assembly/index.ts:95:31
|
||||
(get_local $6)
|
||||
)
|
||||
)
|
||||
;;@ assembly/index.ts:96:6
|
||||
(set_local $8
|
||||
;;@ assembly/index.ts:96:14
|
||||
(f64.load offset=48
|
||||
(get_local $7)
|
||||
)
|
||||
)
|
||||
;;@ assembly/index.ts:97:6
|
||||
(set_local $2
|
||||
(f64.add
|
||||
(get_local $2)
|
||||
;;@ assembly/index.ts:97:12
|
||||
(f64.mul
|
||||
(f64.load offset=24
|
||||
(get_local $7)
|
||||
)
|
||||
;;@ assembly/index.ts:97:19
|
||||
(get_local $8)
|
||||
)
|
||||
)
|
||||
)
|
||||
;;@ assembly/index.ts:98:6
|
||||
(set_local $3
|
||||
(f64.add
|
||||
(get_local $3)
|
||||
;;@ assembly/index.ts:98:12
|
||||
(f64.mul
|
||||
(f64.load offset=32
|
||||
(get_local $7)
|
||||
)
|
||||
;;@ assembly/index.ts:98:19
|
||||
(get_local $8)
|
||||
)
|
||||
)
|
||||
)
|
||||
;;@ assembly/index.ts:99:6
|
||||
(set_local $4
|
||||
(f64.add
|
||||
(get_local $4)
|
||||
;;@ assembly/index.ts:99:12
|
||||
(f64.mul
|
||||
(f64.load offset=40
|
||||
(get_local $7)
|
||||
)
|
||||
;;@ assembly/index.ts:99:19
|
||||
(get_local $8)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
;;@ assembly/index.ts:94:30
|
||||
(set_local $6
|
||||
(i32.add
|
||||
(get_local $6)
|
||||
(i32.const 1)
|
||||
)
|
||||
)
|
||||
(br $repeat|0)
|
||||
)
|
||||
)
|
||||
;;@ assembly/index.ts:101:14
|
||||
(drop
|
||||
(call $assembly/index/Body#offsetMomentum
|
||||
;;@ assembly/index.ts:101:4
|
||||
(call $~lib/array/Array<Body>#__get
|
||||
(get_local $1)
|
||||
;;@ assembly/index.ts:101:11
|
||||
(i32.const 0)
|
||||
)
|
||||
;;@ assembly/index.ts:101:29
|
||||
(get_local $2)
|
||||
;;@ assembly/index.ts:101:33
|
||||
(get_local $3)
|
||||
;;@ assembly/index.ts:101:37
|
||||
(get_local $4)
|
||||
)
|
||||
;;@ assembly/index.ts:101:29
|
||||
(get_local $2)
|
||||
;;@ assembly/index.ts:101:33
|
||||
(get_local $3)
|
||||
;;@ assembly/index.ts:101:37
|
||||
(get_local $4)
|
||||
)
|
||||
)
|
||||
(tee_local $0
|
||||
@ -1399,7 +1391,7 @@
|
||||
)
|
||||
(func $assembly/index/init (; 18 ;) (type $v)
|
||||
(local $0 i32)
|
||||
;;@ assembly/index.ts:190:29
|
||||
;;@ assembly/index.ts:191:2
|
||||
(set_global $assembly/index/system
|
||||
;;@ assembly/index.ts:191:11
|
||||
(call $assembly/index/NBodySystem#constructor
|
||||
@ -2215,7 +2207,7 @@
|
||||
)
|
||||
(func $assembly/index/bench (; 23 ;) (type $iv) (param $0 i32)
|
||||
(local $1 i32)
|
||||
;;@ assembly/index.ts:210:40
|
||||
;;@ assembly/index.ts:211:2
|
||||
(block $break|0
|
||||
;;@ assembly/index.ts:211:7
|
||||
(set_local $1
|
||||
|
@ -1,7 +1,7 @@
|
||||
(module
|
||||
(type $iv (func (param i32)))
|
||||
(type $i (func (result i32)))
|
||||
(type $v (func))
|
||||
(type $i (func (result i32)))
|
||||
(type $I (func (result i64)))
|
||||
(type $iiv (func (param i32 i32)))
|
||||
(type $fv (func (param f32)))
|
||||
|
@ -1,7 +1,7 @@
|
||||
(module
|
||||
(type $iv (func (param i32)))
|
||||
(type $i (func (result i32)))
|
||||
(type $v (func))
|
||||
(type $i (func (result i32)))
|
||||
(type $I (func (result i64)))
|
||||
(type $iiv (func (param i32 i32)))
|
||||
(type $fv (func (param f32)))
|
||||
@ -39,7 +39,7 @@
|
||||
(global $assembly/pson/Token.STRING_ADD i32 (i32.const 253))
|
||||
(global $assembly/pson/Token.STRING_GET i32 (i32.const 254))
|
||||
(global $assembly/pson/Token.BINARY i32 (i32.const 255))
|
||||
(global $HEAP_BASE i32 (i32.const 4))
|
||||
(global $HEAP_BASE i32 (i32.const 8))
|
||||
(memory $0 1)
|
||||
(export "decode" (func $assembly/pson/decode))
|
||||
(export "memory" (memory $0))
|
||||
@ -58,8 +58,6 @@
|
||||
;;@ assembly/pson.ts:136:19
|
||||
(i32.const 0)
|
||||
)
|
||||
;;@ assembly/pson.ts:137:2
|
||||
(nop)
|
||||
;;@ assembly/pson.ts:138:2
|
||||
(block $break|0
|
||||
(loop $continue|0
|
||||
@ -129,9 +127,7 @@
|
||||
)
|
||||
)
|
||||
;;@ assembly/pson.ts:142:9
|
||||
(return
|
||||
(get_local $0)
|
||||
)
|
||||
(get_local $0)
|
||||
)
|
||||
(func $assembly/pson/readVarint64 (; 15 ;) (type $I) (result i64)
|
||||
(local $0 i64)
|
||||
@ -149,8 +145,6 @@
|
||||
;;@ assembly/pson.ts:147:19
|
||||
(i64.const 0)
|
||||
)
|
||||
;;@ assembly/pson.ts:148:2
|
||||
(nop)
|
||||
;;@ assembly/pson.ts:149:2
|
||||
(block $break|0
|
||||
(loop $continue|0
|
||||
@ -222,9 +216,7 @@
|
||||
)
|
||||
)
|
||||
;;@ assembly/pson.ts:153:9
|
||||
(return
|
||||
(get_local $0)
|
||||
)
|
||||
(get_local $0)
|
||||
)
|
||||
(func $assembly/pson/decodeValue (; 16 ;) (type $v)
|
||||
(local $0 i32)
|
||||
@ -250,10 +242,6 @@
|
||||
)
|
||||
)
|
||||
)
|
||||
;;@ assembly/pson.ts:49:2
|
||||
(nop)
|
||||
;;@ assembly/pson.ts:50:2
|
||||
(nop)
|
||||
;;@ assembly/pson.ts:51:2
|
||||
(block $break|0
|
||||
(block $case16|0
|
||||
|
@ -5,7 +5,7 @@
|
||||
(type $v (func))
|
||||
(global $~lib/allocator/tlsf/ROOT (mut i32) (i32.const 0))
|
||||
(global $assembly/ugc/GC (mut i32) (i32.const 0))
|
||||
(global $HEAP_BASE i32 (i32.const 4))
|
||||
(global $HEAP_BASE i32 (i32.const 8))
|
||||
(memory $0 1)
|
||||
(export "gc_collect" (func $assembly/ugc/gc_collect))
|
||||
(export "gc_pause" (func $assembly/ugc/gc_pause))
|
||||
@ -14,9 +14,7 @@
|
||||
(start $start)
|
||||
(func $assembly/ugc/Control.create (; 0 ;) (type $ii) (param $0 i32) (result i32)
|
||||
(local $1 i32)
|
||||
(local $2 i32)
|
||||
(i32.store
|
||||
;;@ assembly/ugc.ts:112:15
|
||||
(get_local $0)
|
||||
(i32.or
|
||||
(get_local $0)
|
||||
@ -41,15 +39,12 @@
|
||||
)
|
||||
)
|
||||
(i32.store
|
||||
;;@ assembly/ugc.ts:113:4
|
||||
(tee_local $1
|
||||
;;@ assembly/ugc.ts:113:4
|
||||
(tee_local $2
|
||||
;;@ assembly/ugc.ts:113:15
|
||||
(i32.add
|
||||
;;@ assembly/ugc.ts:113:40
|
||||
(get_local $0)
|
||||
(i32.const 8)
|
||||
)
|
||||
;;@ assembly/ugc.ts:113:15
|
||||
(i32.add
|
||||
(get_local $0)
|
||||
(i32.const 8)
|
||||
)
|
||||
)
|
||||
(i32.or
|
||||
@ -76,7 +71,6 @@
|
||||
)
|
||||
;;@ assembly/ugc.ts:116:4
|
||||
(i32.store8 offset=28
|
||||
;;@ assembly/ugc.ts:111:18
|
||||
(get_local $0)
|
||||
;;@ assembly/ugc.ts:116:20
|
||||
(i32.const 0)
|
||||
@ -90,14 +84,12 @@
|
||||
;;@ assembly/ugc.ts:118:4
|
||||
(i32.store offset=16
|
||||
(get_local $0)
|
||||
;;@ assembly/ugc.ts:118:19
|
||||
(get_local $0)
|
||||
)
|
||||
;;@ assembly/ugc.ts:119:4
|
||||
(i32.store offset=20
|
||||
(get_local $0)
|
||||
;;@ assembly/ugc.ts:119:17
|
||||
(get_local $2)
|
||||
(get_local $1)
|
||||
)
|
||||
;;@ assembly/ugc.ts:120:4
|
||||
(i32.store offset=24
|
||||
@ -107,11 +99,14 @@
|
||||
(get_local $0)
|
||||
)
|
||||
)
|
||||
;;@ assembly/ugc.ts:121:11
|
||||
(get_local $0)
|
||||
)
|
||||
(func $assembly/ugc/Control#set:paused (; 1 ;) (type $iiv) (param $0 i32) (param $1 i32)
|
||||
(local $2 i32)
|
||||
(set_local $2
|
||||
;;@ assembly/ugc.ts:102:4
|
||||
(get_local $0)
|
||||
)
|
||||
;;@ assembly/ugc.ts:102:17
|
||||
(if
|
||||
(i32.and
|
||||
@ -119,12 +114,12 @@
|
||||
(i32.const 1)
|
||||
)
|
||||
(i32.store8 offset=28
|
||||
;;@ assembly/ugc.ts:103:8
|
||||
(get_local $0)
|
||||
(tee_local $2
|
||||
(get_local $2)
|
||||
(tee_local $0
|
||||
(i32.or
|
||||
;;@ assembly/ugc.ts:103:8
|
||||
(i32.load8_u offset=28
|
||||
(get_local $0)
|
||||
(get_local $2)
|
||||
)
|
||||
;;@ assembly/ugc.ts:103:22
|
||||
(i32.const 128)
|
||||
@ -132,23 +127,22 @@
|
||||
)
|
||||
)
|
||||
(i32.store8 offset=28
|
||||
;;@ assembly/ugc.ts:104:8
|
||||
(get_local $0)
|
||||
(tee_local $2
|
||||
(get_local $2)
|
||||
(tee_local $0
|
||||
(i32.and
|
||||
;;@ assembly/ugc.ts:104:8
|
||||
(i32.load8_u offset=28
|
||||
(get_local $0)
|
||||
(get_local $2)
|
||||
)
|
||||
(i32.const -129)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
;;@ assembly/ugc.ts:101:27
|
||||
;;@ assembly/ugc.ts:102:4
|
||||
(i32.store8 offset=28
|
||||
;;@ assembly/ugc.ts:102:4
|
||||
(get_local $0)
|
||||
(get_local $2)
|
||||
(get_local $0)
|
||||
)
|
||||
)
|
||||
(func $~lib/allocator/tlsf/Root#remove (; 2 ;) (type $iiv) (param $0 i32) (param $1 i32)
|
||||
@ -175,22 +169,18 @@
|
||||
;;@ ~lib/allocator/tlsf.ts:264:15
|
||||
(i32.const 256)
|
||||
)
|
||||
;;@ ~lib/allocator/tlsf.ts:264:24
|
||||
(block (result i32)
|
||||
;;@ ~lib/allocator/tlsf.ts:266:6
|
||||
(set_local $4
|
||||
;;@ ~lib/allocator/tlsf.ts:266:11
|
||||
(i32.div_u
|
||||
;;@ ~lib/allocator/tlsf.ts:266:17
|
||||
(get_local $2)
|
||||
;;@ ~lib/allocator/tlsf.ts:266:24
|
||||
(i32.const 8)
|
||||
)
|
||||
)
|
||||
;;@ ~lib/allocator/tlsf.ts:265:11
|
||||
(i32.const 0)
|
||||
)
|
||||
;;@ ~lib/allocator/tlsf.ts:267:11
|
||||
(block (result i32)
|
||||
;;@ ~lib/allocator/tlsf.ts:269:6
|
||||
(set_local $4
|
||||
@ -198,7 +188,6 @@
|
||||
(i32.xor
|
||||
;;@ ~lib/allocator/tlsf.ts:269:17
|
||||
(i32.shr_u
|
||||
;;@ ~lib/allocator/tlsf.ts:269:18
|
||||
(get_local $2)
|
||||
;;@ ~lib/allocator/tlsf.ts:269:26
|
||||
(i32.sub
|
||||
@ -207,7 +196,6 @@
|
||||
(i32.sub
|
||||
(i32.const 31)
|
||||
(i32.clz
|
||||
;;@ ~lib/allocator/tlsf.ts:268:22
|
||||
(get_local $2)
|
||||
)
|
||||
)
|
||||
@ -220,9 +208,7 @@
|
||||
)
|
||||
)
|
||||
(i32.sub
|
||||
;;@ ~lib/allocator/tlsf.ts:270:6
|
||||
(get_local $3)
|
||||
;;@ ~lib/allocator/tlsf.ts:270:12
|
||||
(i32.const 7)
|
||||
)
|
||||
)
|
||||
@ -247,18 +233,15 @@
|
||||
;;@ ~lib/allocator/tlsf.ts:276:14
|
||||
(i32.store offset=8
|
||||
(get_local $5)
|
||||
;;@ ~lib/allocator/tlsf.ts:276:26
|
||||
(get_local $2)
|
||||
)
|
||||
)
|
||||
;;@ ~lib/allocator/tlsf.ts:277:4
|
||||
(if
|
||||
;;@ ~lib/allocator/tlsf.ts:277:8
|
||||
(get_local $2)
|
||||
;;@ ~lib/allocator/tlsf.ts:277:14
|
||||
(i32.store offset=4
|
||||
(get_local $2)
|
||||
;;@ ~lib/allocator/tlsf.ts:277:26
|
||||
(get_local $5)
|
||||
)
|
||||
)
|
||||
@ -269,16 +252,13 @@
|
||||
(get_local $1)
|
||||
(i32.load offset=96
|
||||
(i32.add
|
||||
;;@ ~lib/allocator/tlsf.ts:280:17
|
||||
(get_local $0)
|
||||
(i32.shl
|
||||
(i32.add
|
||||
(i32.shl
|
||||
;;@ ~lib/allocator/tlsf.ts:280:30
|
||||
(get_local $3)
|
||||
(i32.const 5)
|
||||
)
|
||||
;;@ ~lib/allocator/tlsf.ts:280:34
|
||||
(get_local $4)
|
||||
)
|
||||
(i32.const 2)
|
||||
@ -290,39 +270,32 @@
|
||||
(block
|
||||
(i32.store offset=96
|
||||
(i32.add
|
||||
;;@ ~lib/allocator/tlsf.ts:281:6
|
||||
(get_local $0)
|
||||
(i32.shl
|
||||
(i32.add
|
||||
(i32.shl
|
||||
;;@ ~lib/allocator/tlsf.ts:281:19
|
||||
(get_local $3)
|
||||
(i32.const 5)
|
||||
)
|
||||
;;@ ~lib/allocator/tlsf.ts:281:23
|
||||
(get_local $4)
|
||||
)
|
||||
(i32.const 2)
|
||||
)
|
||||
)
|
||||
;;@ ~lib/allocator/tlsf.ts:281:27
|
||||
(get_local $2)
|
||||
)
|
||||
;;@ ~lib/allocator/tlsf.ts:284:6
|
||||
(if
|
||||
;;@ ~lib/allocator/tlsf.ts:284:10
|
||||
(i32.eqz
|
||||
;;@ ~lib/allocator/tlsf.ts:284:11
|
||||
(get_local $2)
|
||||
)
|
||||
;;@ ~lib/allocator/tlsf.ts:284:17
|
||||
(block
|
||||
(i32.store offset=4
|
||||
(i32.add
|
||||
;;@ ~lib/allocator/tlsf.ts:286:8
|
||||
(get_local $0)
|
||||
(i32.shl
|
||||
;;@ ~lib/allocator/tlsf.ts:286:22
|
||||
(get_local $3)
|
||||
(i32.const 2)
|
||||
)
|
||||
@ -332,10 +305,8 @@
|
||||
(i32.and
|
||||
(i32.load offset=4
|
||||
(i32.add
|
||||
;;@ ~lib/allocator/tlsf.ts:285:20
|
||||
(get_local $0)
|
||||
(i32.shl
|
||||
;;@ ~lib/allocator/tlsf.ts:285:34
|
||||
(get_local $3)
|
||||
(i32.const 2)
|
||||
)
|
||||
@ -347,7 +318,6 @@
|
||||
(i32.shl
|
||||
;;@ ~lib/allocator/tlsf.ts:286:37
|
||||
(i32.const 1)
|
||||
;;@ ~lib/allocator/tlsf.ts:286:42
|
||||
(get_local $4)
|
||||
)
|
||||
(i32.const -1)
|
||||
@ -359,7 +329,6 @@
|
||||
(if
|
||||
;;@ ~lib/allocator/tlsf.ts:289:12
|
||||
(i32.eqz
|
||||
;;@ ~lib/allocator/tlsf.ts:289:13
|
||||
(get_local $1)
|
||||
)
|
||||
;;@ ~lib/allocator/tlsf.ts:289:20
|
||||
@ -375,7 +344,6 @@
|
||||
(i32.shl
|
||||
;;@ ~lib/allocator/tlsf.ts:289:36
|
||||
(i32.const 1)
|
||||
;;@ ~lib/allocator/tlsf.ts:289:41
|
||||
(get_local $3)
|
||||
)
|
||||
(i32.const -1)
|
||||
@ -412,7 +380,6 @@
|
||||
(tee_local $4
|
||||
(i32.add
|
||||
(i32.add
|
||||
;;@ ~lib/allocator/tlsf.ts:197:30
|
||||
(get_local $1)
|
||||
(i32.const 8)
|
||||
)
|
||||
@ -433,9 +400,7 @@
|
||||
(block
|
||||
;;@ ~lib/allocator/tlsf.ts:202:11
|
||||
(call $~lib/allocator/tlsf/Root#remove
|
||||
;;@ ~lib/allocator/tlsf.ts:202:6
|
||||
(get_local $0)
|
||||
;;@ ~lib/allocator/tlsf.ts:202:18
|
||||
(get_local $4)
|
||||
)
|
||||
;;@ ~lib/allocator/tlsf.ts:203:6
|
||||
@ -444,13 +409,11 @@
|
||||
;;@ ~lib/allocator/tlsf.ts:203:19
|
||||
(tee_local $2
|
||||
(i32.add
|
||||
;;@ ~lib/allocator/tlsf.ts:203:20
|
||||
(get_local $2)
|
||||
;;@ ~lib/allocator/tlsf.ts:203:33
|
||||
(i32.add
|
||||
;;@ ~lib/allocator/tlsf.ts:203:46
|
||||
(i32.and
|
||||
;;@ ~lib/allocator/tlsf.ts:203:47
|
||||
(get_local $5)
|
||||
(i32.const -4)
|
||||
)
|
||||
@ -468,7 +431,6 @@
|
||||
(tee_local $4
|
||||
(i32.add
|
||||
(i32.add
|
||||
;;@ ~lib/allocator/tlsf.ts:204:14
|
||||
(get_local $1)
|
||||
(i32.const 8)
|
||||
)
|
||||
@ -502,7 +464,6 @@
|
||||
(tee_local $1
|
||||
(i32.load
|
||||
(i32.sub
|
||||
;;@ ~lib/allocator/tlsf.ts:211:31
|
||||
(get_local $1)
|
||||
(i32.const 4)
|
||||
)
|
||||
@ -512,9 +473,7 @@
|
||||
)
|
||||
;;@ ~lib/allocator/tlsf.ts:214:11
|
||||
(call $~lib/allocator/tlsf/Root#remove
|
||||
;;@ ~lib/allocator/tlsf.ts:214:6
|
||||
(get_local $0)
|
||||
;;@ ~lib/allocator/tlsf.ts:214:18
|
||||
(get_local $1)
|
||||
)
|
||||
;;@ ~lib/allocator/tlsf.ts:215:6
|
||||
@ -523,13 +482,11 @@
|
||||
;;@ ~lib/allocator/tlsf.ts:215:18
|
||||
(tee_local $3
|
||||
(i32.add
|
||||
;;@ ~lib/allocator/tlsf.ts:215:19
|
||||
(get_local $3)
|
||||
;;@ ~lib/allocator/tlsf.ts:215:31
|
||||
(i32.add
|
||||
;;@ ~lib/allocator/tlsf.ts:215:44
|
||||
(i32.and
|
||||
;;@ ~lib/allocator/tlsf.ts:215:45
|
||||
(get_local $2)
|
||||
(i32.const -4)
|
||||
)
|
||||
@ -541,7 +498,6 @@
|
||||
)
|
||||
;;@ ~lib/allocator/tlsf.ts:217:6
|
||||
(set_local $2
|
||||
;;@ ~lib/allocator/tlsf.ts:217:18
|
||||
(get_local $3)
|
||||
)
|
||||
)
|
||||
@ -558,18 +514,14 @@
|
||||
)
|
||||
(i32.store
|
||||
(i32.sub
|
||||
;;@ ~lib/allocator/tlsf.ts:222:24
|
||||
(get_local $4)
|
||||
(i32.const 4)
|
||||
)
|
||||
;;@ ~lib/allocator/tlsf.ts:222:17
|
||||
(get_local $1)
|
||||
)
|
||||
;;@ ~lib/allocator/tlsf.ts:240:4
|
||||
(set_local $4
|
||||
(i32.load offset=96
|
||||
(i32.add
|
||||
;;@ ~lib/allocator/tlsf.ts:240:15
|
||||
(get_local $0)
|
||||
(i32.shl
|
||||
(i32.add
|
||||
@ -590,22 +542,18 @@
|
||||
;;@ ~lib/allocator/tlsf.ts:230:15
|
||||
(i32.const 256)
|
||||
)
|
||||
;;@ ~lib/allocator/tlsf.ts:230:24
|
||||
(block (result i32)
|
||||
;;@ ~lib/allocator/tlsf.ts:232:6
|
||||
(set_local $3
|
||||
;;@ ~lib/allocator/tlsf.ts:232:11
|
||||
(i32.div_u
|
||||
;;@ ~lib/allocator/tlsf.ts:232:17
|
||||
(get_local $3)
|
||||
;;@ ~lib/allocator/tlsf.ts:232:24
|
||||
(i32.const 8)
|
||||
)
|
||||
)
|
||||
;;@ ~lib/allocator/tlsf.ts:231:11
|
||||
(i32.const 0)
|
||||
)
|
||||
;;@ ~lib/allocator/tlsf.ts:233:11
|
||||
(block (result i32)
|
||||
;;@ ~lib/allocator/tlsf.ts:235:6
|
||||
(set_local $3
|
||||
@ -613,7 +561,6 @@
|
||||
(i32.xor
|
||||
;;@ ~lib/allocator/tlsf.ts:235:17
|
||||
(i32.shr_u
|
||||
;;@ ~lib/allocator/tlsf.ts:235:18
|
||||
(get_local $3)
|
||||
;;@ ~lib/allocator/tlsf.ts:235:26
|
||||
(i32.sub
|
||||
@ -622,7 +569,6 @@
|
||||
(i32.sub
|
||||
(i32.const 31)
|
||||
(i32.clz
|
||||
;;@ ~lib/allocator/tlsf.ts:234:22
|
||||
(get_local $3)
|
||||
)
|
||||
)
|
||||
@ -635,9 +581,7 @@
|
||||
)
|
||||
)
|
||||
(i32.sub
|
||||
;;@ ~lib/allocator/tlsf.ts:236:6
|
||||
(get_local $2)
|
||||
;;@ ~lib/allocator/tlsf.ts:236:12
|
||||
(i32.const 7)
|
||||
)
|
||||
)
|
||||
@ -645,7 +589,6 @@
|
||||
)
|
||||
(i32.const 5)
|
||||
)
|
||||
;;@ ~lib/allocator/tlsf.ts:240:32
|
||||
(get_local $3)
|
||||
)
|
||||
(i32.const 2)
|
||||
@ -662,38 +605,31 @@
|
||||
;;@ ~lib/allocator/tlsf.ts:242:4
|
||||
(i32.store offset=8
|
||||
(get_local $1)
|
||||
;;@ ~lib/allocator/tlsf.ts:242:17
|
||||
(get_local $4)
|
||||
)
|
||||
;;@ ~lib/allocator/tlsf.ts:243:4
|
||||
(if
|
||||
;;@ ~lib/allocator/tlsf.ts:243:8
|
||||
(get_local $4)
|
||||
;;@ ~lib/allocator/tlsf.ts:243:14
|
||||
(i32.store offset=4
|
||||
(get_local $4)
|
||||
;;@ ~lib/allocator/tlsf.ts:243:26
|
||||
(get_local $1)
|
||||
)
|
||||
)
|
||||
(i32.store offset=96
|
||||
(i32.add
|
||||
;;@ ~lib/allocator/tlsf.ts:244:4
|
||||
(get_local $0)
|
||||
(i32.shl
|
||||
(i32.add
|
||||
(i32.shl
|
||||
;;@ ~lib/allocator/tlsf.ts:244:17
|
||||
(get_local $2)
|
||||
(i32.const 5)
|
||||
)
|
||||
;;@ ~lib/allocator/tlsf.ts:244:21
|
||||
(get_local $3)
|
||||
)
|
||||
(i32.const 2)
|
||||
)
|
||||
)
|
||||
;;@ ~lib/allocator/tlsf.ts:244:25
|
||||
(get_local $1)
|
||||
)
|
||||
;;@ ~lib/allocator/tlsf.ts:247:4
|
||||
@ -707,17 +643,14 @@
|
||||
(i32.shl
|
||||
;;@ ~lib/allocator/tlsf.ts:247:19
|
||||
(i32.const 1)
|
||||
;;@ ~lib/allocator/tlsf.ts:247:24
|
||||
(get_local $2)
|
||||
)
|
||||
)
|
||||
)
|
||||
(i32.store offset=4
|
||||
(i32.add
|
||||
;;@ ~lib/allocator/tlsf.ts:248:4
|
||||
(get_local $0)
|
||||
(i32.shl
|
||||
;;@ ~lib/allocator/tlsf.ts:248:18
|
||||
(get_local $2)
|
||||
(i32.const 2)
|
||||
)
|
||||
@ -728,7 +661,6 @@
|
||||
(i32.add
|
||||
(get_local $0)
|
||||
(i32.shl
|
||||
;;@ ~lib/allocator/tlsf.ts:248:36
|
||||
(get_local $2)
|
||||
(i32.const 2)
|
||||
)
|
||||
@ -738,7 +670,6 @@
|
||||
(i32.shl
|
||||
;;@ ~lib/allocator/tlsf.ts:248:43
|
||||
(i32.const 1)
|
||||
;;@ ~lib/allocator/tlsf.ts:248:48
|
||||
(get_local $3)
|
||||
)
|
||||
)
|
||||
@ -747,9 +678,8 @@
|
||||
(func $~lib/allocator/tlsf/free_memory (; 4 ;) (type $iv) (param $0 i32)
|
||||
(local $1 i32)
|
||||
(local $2 i32)
|
||||
;;@ ~lib/allocator/tlsf.ts:491:47
|
||||
;;@ ~lib/allocator/tlsf.ts:492:2
|
||||
(if
|
||||
;;@ ~lib/allocator/tlsf.ts:492:6
|
||||
(get_local $0)
|
||||
;;@ ~lib/allocator/tlsf.ts:494:4
|
||||
(if
|
||||
@ -760,39 +690,35 @@
|
||||
)
|
||||
;;@ ~lib/allocator/tlsf.ts:494:14
|
||||
(block
|
||||
;;@ ~lib/allocator/tlsf.ts:498:6
|
||||
(i32.store
|
||||
;;@ ~lib/allocator/tlsf.ts:495:6
|
||||
(tee_local $2
|
||||
;;@ ~lib/allocator/tlsf.ts:495:18
|
||||
(i32.sub
|
||||
;;@ ~lib/allocator/tlsf.ts:495:36
|
||||
(get_local $0)
|
||||
;;@ ~lib/allocator/tlsf.ts:495:43
|
||||
(i32.const 8)
|
||||
;;@ ~lib/allocator/tlsf.ts:496:6
|
||||
(set_local $2
|
||||
;;@ ~lib/allocator/tlsf.ts:496:22
|
||||
(i32.load
|
||||
;;@ ~lib/allocator/tlsf.ts:495:6
|
||||
(tee_local $0
|
||||
;;@ ~lib/allocator/tlsf.ts:495:18
|
||||
(i32.sub
|
||||
(get_local $0)
|
||||
;;@ ~lib/allocator/tlsf.ts:495:43
|
||||
(i32.const 8)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
;;@ ~lib/allocator/tlsf.ts:498:6
|
||||
(i32.store
|
||||
(get_local $0)
|
||||
;;@ ~lib/allocator/tlsf.ts:498:19
|
||||
(i32.or
|
||||
;;@ ~lib/allocator/tlsf.ts:496:22
|
||||
(i32.load
|
||||
(get_local $2)
|
||||
)
|
||||
(get_local $2)
|
||||
;;@ ~lib/allocator/tlsf.ts:498:31
|
||||
(i32.const 1)
|
||||
)
|
||||
)
|
||||
;;@ ~lib/allocator/tlsf.ts:499:11
|
||||
(call $~lib/allocator/tlsf/Root#insert
|
||||
;;@ ~lib/allocator/tlsf.ts:499:6
|
||||
(get_local $1)
|
||||
;;@ ~lib/allocator/tlsf.ts:499:18
|
||||
(i32.sub
|
||||
;;@ ~lib/allocator/tlsf.ts:499:36
|
||||
(get_local $0)
|
||||
;;@ ~lib/allocator/tlsf.ts:499:43
|
||||
(i32.const 8)
|
||||
)
|
||||
(get_local $0)
|
||||
)
|
||||
)
|
||||
)
|
||||
@ -801,20 +727,34 @@
|
||||
(func $assembly/ugc/Control#step (; 5 ;) (type $iv) (param $0 i32)
|
||||
(local $1 i32)
|
||||
(local $2 i32)
|
||||
;;@ assembly/ugc.ts:163:15
|
||||
;;@ assembly/ugc.ts:165:4
|
||||
(block $break|0
|
||||
(block $case2|0
|
||||
(block $case1|0
|
||||
(block $case0|0
|
||||
(block $tablify|0
|
||||
(br_table $case0|0 $case1|0 $case2|0 $tablify|0
|
||||
;;@ assembly/ugc.ts:165:12
|
||||
(i32.load8_u offset=28
|
||||
(get_local $0)
|
||||
)
|
||||
(if
|
||||
(tee_local $1
|
||||
;;@ assembly/ugc.ts:165:12
|
||||
(i32.load8_u offset=28
|
||||
(get_local $0)
|
||||
)
|
||||
)
|
||||
(br $break|0)
|
||||
(block
|
||||
(br_if $case1|0
|
||||
(i32.eq
|
||||
(get_local $1)
|
||||
;;@ assembly/ugc.ts:172:11
|
||||
(i32.const 1)
|
||||
)
|
||||
)
|
||||
(br_if $case2|0
|
||||
(i32.eq
|
||||
(get_local $1)
|
||||
;;@ assembly/ugc.ts:194:11
|
||||
(i32.const 2)
|
||||
)
|
||||
)
|
||||
(br $break|0)
|
||||
)
|
||||
)
|
||||
;;@ assembly/ugc.ts:169:8
|
||||
(i32.store8 offset=28
|
||||
@ -858,18 +798,15 @@
|
||||
;;@ assembly/ugc.ts:177:10
|
||||
(i32.store offset=24
|
||||
(get_local $0)
|
||||
;;@ assembly/ugc.ts:177:26
|
||||
(get_local $1)
|
||||
)
|
||||
(i32.store
|
||||
;;@ assembly/ugc.ts:178:10
|
||||
(get_local $1)
|
||||
(i32.or
|
||||
(i32.load
|
||||
(get_local $1)
|
||||
)
|
||||
(i32.xor
|
||||
;;@ assembly/ugc.ts:178:22
|
||||
(get_local $2)
|
||||
;;@ assembly/ugc.ts:178:30
|
||||
(i32.const 1)
|
||||
@ -877,7 +814,6 @@
|
||||
)
|
||||
)
|
||||
(if
|
||||
;;@ assembly/ugc.ts:179:27
|
||||
(get_local $1)
|
||||
(drop
|
||||
(i32.load offset=8
|
||||
@ -924,7 +860,6 @@
|
||||
;;@ assembly/ugc.ts:186:12
|
||||
(i32.store offset=20
|
||||
(get_local $0)
|
||||
;;@ assembly/ugc.ts:186:22
|
||||
(get_local $1)
|
||||
)
|
||||
;;@ assembly/ugc.ts:187:12
|
||||
@ -942,7 +877,6 @@
|
||||
(get_local $0)
|
||||
;;@ assembly/ugc.ts:188:28
|
||||
(i32.load
|
||||
;;@ assembly/ugc.ts:188:53
|
||||
(get_local $1)
|
||||
)
|
||||
)
|
||||
@ -981,7 +915,6 @@
|
||||
(get_local $0)
|
||||
(i32.and
|
||||
(i32.load
|
||||
;;@ assembly/ugc.ts:197:26
|
||||
(get_local $1)
|
||||
)
|
||||
(i32.const -4)
|
||||
@ -990,7 +923,6 @@
|
||||
(drop
|
||||
(i32.load
|
||||
(i32.add
|
||||
;;@ assembly/ugc.ts:198:27
|
||||
(get_local $1)
|
||||
(i32.const 8)
|
||||
)
|
||||
@ -1092,23 +1024,20 @@
|
||||
;;@ assembly/ugc.ts:268:2
|
||||
(call $assembly/ugc/Control#set:paused
|
||||
(get_global $assembly/ugc/GC)
|
||||
;;@ assembly/ugc.ts:268:14
|
||||
(get_local $1)
|
||||
)
|
||||
)
|
||||
(func $assembly/ugc/gc_pause (; 7 ;) (type $v)
|
||||
;;@ assembly/ugc.ts:254:33
|
||||
;;@ assembly/ugc.ts:255:2
|
||||
(call $assembly/ugc/Control#set:paused
|
||||
;;@ assembly/ugc.ts:255:2
|
||||
(get_global $assembly/ugc/GC)
|
||||
;;@ assembly/ugc.ts:255:14
|
||||
(i32.const 1)
|
||||
)
|
||||
)
|
||||
(func $assembly/ugc/gc_resume (; 8 ;) (type $v)
|
||||
;;@ assembly/ugc.ts:259:34
|
||||
;;@ assembly/ugc.ts:260:2
|
||||
(call $assembly/ugc/Control#set:paused
|
||||
;;@ assembly/ugc.ts:260:2
|
||||
(get_global $assembly/ugc/GC)
|
||||
;;@ assembly/ugc.ts:260:14
|
||||
(i32.const 0)
|
||||
|
@ -1,5 +1,4 @@
|
||||
(module
|
||||
(type $i (func (result i32)))
|
||||
(type $iiiiv (func (param i32 i32 i32 i32)))
|
||||
(type $ii (func (param i32) (result i32)))
|
||||
(type $iv (func (param i32)))
|
||||
@ -8,7 +7,7 @@
|
||||
(type $iiii (func (param i32 i32 i32) (result i32)))
|
||||
(type $iii (func (param i32 i32) (result i32)))
|
||||
(type $iiiv (func (param i32 i32 i32)))
|
||||
(import "env" "abort" (func $abort (param i32 i32 i32 i32)))
|
||||
(import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32)))
|
||||
(global $~lib/internal/allocator/AL_BITS i32 (i32.const 3))
|
||||
(global $~lib/internal/allocator/AL_SIZE i32 (i32.const 8))
|
||||
(global $~lib/internal/allocator/AL_MASK i32 (i32.const 7))
|
||||
@ -27,19 +26,18 @@
|
||||
(global $assembly/ugc/SWEEP i32 (i32.const 2))
|
||||
(global $assembly/ugc/GRAY i32 (i32.const 2))
|
||||
(global $assembly/ugc/GC (mut i32) (i32.const 0))
|
||||
(global $HEAP_BASE i32 (i32.const 88))
|
||||
(global $HEAP_BASE i32 (i32.const 92))
|
||||
(memory $0 1)
|
||||
(data (i32.const 4) "\16\00\00\00~\00l\00i\00b\00/\00a\00l\00l\00o\00c\00a\00t\00o\00r\00/\00t\00l\00s\00f\00.\00t\00s\00")
|
||||
(data (i32.const 52) "\0f\00\00\00a\00s\00s\00e\00m\00b\00l\00y\00/\00u\00g\00c\00.\00t\00s\00")
|
||||
(data (i32.const 8) "\16\00\00\00~\00l\00i\00b\00/\00a\00l\00l\00o\00c\00a\00t\00o\00r\00/\00t\00l\00s\00f\00.\00t\00s\00")
|
||||
(data (i32.const 56) "\0f\00\00\00a\00s\00s\00e\00m\00b\00l\00y\00/\00u\00g\00c\00.\00t\00s\00")
|
||||
(export "gc_collect" (func $assembly/ugc/gc_collect))
|
||||
(export "gc_pause" (func $assembly/ugc/gc_pause))
|
||||
(export "gc_resume" (func $assembly/ugc/gc_resume))
|
||||
(export "memory" (memory $0))
|
||||
(start $start)
|
||||
(func $assembly/ugc/ObjectHeader#set:next (; 1 ;) (type $iiv) (param $0 i32) (param $1 i32)
|
||||
;;@ assembly/ugc.ts:32:32
|
||||
;;@ assembly/ugc.ts:33:4
|
||||
(i32.store
|
||||
;;@ assembly/ugc.ts:33:4
|
||||
(get_local $0)
|
||||
;;@ assembly/ugc.ts:33:23
|
||||
(i32.or
|
||||
@ -57,9 +55,8 @@
|
||||
)
|
||||
)
|
||||
(func $assembly/ugc/ObjectHeader#set:prev (; 2 ;) (type $iiv) (param $0 i32) (param $1 i32)
|
||||
;;@ assembly/ugc.ts:40:32
|
||||
;;@ assembly/ugc.ts:41:4
|
||||
(i32.store offset=4
|
||||
;;@ assembly/ugc.ts:41:4
|
||||
(get_local $0)
|
||||
;;@ assembly/ugc.ts:41:23
|
||||
(i32.or
|
||||
@ -161,33 +158,28 @@
|
||||
)
|
||||
)
|
||||
;;@ assembly/ugc.ts:121:11
|
||||
(return
|
||||
(get_local $1)
|
||||
)
|
||||
(get_local $1)
|
||||
)
|
||||
(func $assembly/ugc/Control#get:paused (; 5 ;) (type $ii) (param $0 i32) (result i32)
|
||||
;;@ assembly/ugc.ts:99:21
|
||||
(return
|
||||
;;@ assembly/ugc.ts:99:67
|
||||
(i32.ne
|
||||
;;@ assembly/ugc.ts:99:30
|
||||
(i32.ne
|
||||
(i32.and
|
||||
;;@ assembly/ugc.ts:99:31
|
||||
(i32.load8_u offset=28
|
||||
(get_local $0)
|
||||
)
|
||||
;;@ assembly/ugc.ts:99:44
|
||||
(i32.const 128)
|
||||
(i32.and
|
||||
;;@ assembly/ugc.ts:99:31
|
||||
(i32.load8_u offset=28
|
||||
(get_local $0)
|
||||
)
|
||||
;;@ assembly/ugc.ts:99:67
|
||||
(i32.const 0)
|
||||
;;@ assembly/ugc.ts:99:44
|
||||
(i32.const 128)
|
||||
)
|
||||
;;@ assembly/ugc.ts:99:67
|
||||
(i32.const 0)
|
||||
)
|
||||
)
|
||||
(func $assembly/ugc/Control#set:paused (; 6 ;) (type $iiv) (param $0 i32) (param $1 i32)
|
||||
(local $2 i32)
|
||||
;;@ assembly/ugc.ts:101:27
|
||||
;;@ assembly/ugc.ts:102:4
|
||||
(i32.store8 offset=28
|
||||
;;@ assembly/ugc.ts:102:4
|
||||
(get_local $0)
|
||||
;;@ assembly/ugc.ts:102:17
|
||||
(if (result i32)
|
||||
@ -240,7 +232,7 @@
|
||||
)
|
||||
(func $assembly/ugc/gc_scan_fn (; 7 ;) (type $iiv) (param $0 i32) (param $1 i32)
|
||||
(local $2 i32)
|
||||
;;@ assembly/ugc.ts:274:73
|
||||
;;@ assembly/ugc.ts:275:2
|
||||
(if
|
||||
;;@ assembly/ugc.ts:275:6
|
||||
(i32.eqz
|
||||
@ -260,20 +252,17 @@
|
||||
)
|
||||
)
|
||||
(func $assembly/ugc/ObjectHeader#get:next (; 8 ;) (type $ii) (param $0 i32) (result i32)
|
||||
;;@ assembly/ugc.ts:28:27
|
||||
(return
|
||||
;;@ assembly/ugc.ts:29:11
|
||||
(i32.and
|
||||
;;@ assembly/ugc.ts:29:36
|
||||
(i32.load
|
||||
(get_local $0)
|
||||
)
|
||||
;;@ assembly/ugc.ts:29:55
|
||||
(i32.xor
|
||||
;;@ assembly/ugc.ts:29:56
|
||||
(i32.const 3)
|
||||
(i32.const -1)
|
||||
)
|
||||
;;@ assembly/ugc.ts:29:57
|
||||
(i32.and
|
||||
;;@ assembly/ugc.ts:29:36
|
||||
(i32.load
|
||||
(get_local $0)
|
||||
)
|
||||
;;@ assembly/ugc.ts:29:55
|
||||
(i32.xor
|
||||
;;@ assembly/ugc.ts:29:56
|
||||
(i32.const 3)
|
||||
(i32.const -1)
|
||||
)
|
||||
)
|
||||
)
|
||||
@ -289,9 +278,9 @@
|
||||
)
|
||||
)
|
||||
(block
|
||||
(call $abort
|
||||
(call $~lib/env/abort
|
||||
(i32.const 0)
|
||||
(i32.const 52)
|
||||
(i32.const 56)
|
||||
(i32.const 49)
|
||||
(i32.const 4)
|
||||
)
|
||||
@ -330,9 +319,9 @@
|
||||
)
|
||||
)
|
||||
(block
|
||||
(call $abort
|
||||
(call $~lib/env/abort
|
||||
(i32.const 0)
|
||||
(i32.const 4)
|
||||
(i32.const 8)
|
||||
(i32.const 89)
|
||||
(i32.const 4)
|
||||
)
|
||||
@ -340,46 +329,43 @@
|
||||
)
|
||||
)
|
||||
;;@ ~lib/allocator/tlsf.ts:94:4
|
||||
(return
|
||||
;;@ ~lib/allocator/tlsf.ts:90:11
|
||||
(if (result i32)
|
||||
(i32.eqz
|
||||
(tee_local $1
|
||||
;;@ ~lib/allocator/tlsf.ts:91:6
|
||||
(if (result i32)
|
||||
(i32.eqz
|
||||
(tee_local $1
|
||||
;;@ ~lib/allocator/tlsf.ts:91:6
|
||||
(i32.add
|
||||
;;@ ~lib/allocator/tlsf.ts:92:8
|
||||
(i32.add
|
||||
;;@ ~lib/allocator/tlsf.ts:92:8
|
||||
(i32.add
|
||||
(get_local $0)
|
||||
;;@ ~lib/allocator/tlsf.ts:92:34
|
||||
(i32.const 8)
|
||||
)
|
||||
;;@ ~lib/allocator/tlsf.ts:92:47
|
||||
(i32.and
|
||||
;;@ ~lib/allocator/tlsf.ts:92:48
|
||||
(i32.load
|
||||
(get_local $0)
|
||||
;;@ ~lib/allocator/tlsf.ts:92:34
|
||||
(i32.const 8)
|
||||
)
|
||||
;;@ ~lib/allocator/tlsf.ts:92:47
|
||||
(i32.and
|
||||
;;@ ~lib/allocator/tlsf.ts:92:48
|
||||
(i32.load
|
||||
(get_local $0)
|
||||
)
|
||||
;;@ ~lib/allocator/tlsf.ts:92:60
|
||||
(i32.xor
|
||||
;;@ ~lib/allocator/tlsf.ts:92:61
|
||||
(i32.const 3)
|
||||
(i32.const -1)
|
||||
)
|
||||
;;@ ~lib/allocator/tlsf.ts:92:60
|
||||
(i32.xor
|
||||
;;@ ~lib/allocator/tlsf.ts:92:61
|
||||
(i32.const 3)
|
||||
(i32.const -1)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(block
|
||||
(call $abort
|
||||
(i32.const 0)
|
||||
(i32.const 4)
|
||||
(i32.const 90)
|
||||
(i32.const 11)
|
||||
)
|
||||
(unreachable)
|
||||
)
|
||||
(get_local $1)
|
||||
)
|
||||
(block
|
||||
(call $~lib/env/abort
|
||||
(i32.const 0)
|
||||
(i32.const 8)
|
||||
(i32.const 90)
|
||||
(i32.const 11)
|
||||
)
|
||||
(unreachable)
|
||||
)
|
||||
(get_local $1)
|
||||
)
|
||||
)
|
||||
(func $~lib/allocator/tlsf/fls<usize> (; 11 ;) (type $ii) (param $0 i32) (result i32)
|
||||
@ -394,9 +380,9 @@
|
||||
)
|
||||
)
|
||||
(block
|
||||
(call $abort
|
||||
(call $~lib/env/abort
|
||||
(i32.const 0)
|
||||
(i32.const 4)
|
||||
(i32.const 8)
|
||||
(i32.const 428)
|
||||
(i32.const 2)
|
||||
)
|
||||
@ -404,15 +390,13 @@
|
||||
)
|
||||
)
|
||||
;;@ ~lib/allocator/tlsf.ts:430:26
|
||||
(return
|
||||
(i32.sub
|
||||
;;@ ~lib/allocator/tlsf.ts:430:9
|
||||
(i32.sub
|
||||
(i32.const 31)
|
||||
;;@ ~lib/allocator/tlsf.ts:430:15
|
||||
(i32.clz
|
||||
;;@ ~lib/allocator/tlsf.ts:430:22
|
||||
(get_local $0)
|
||||
)
|
||||
(i32.const 31)
|
||||
;;@ ~lib/allocator/tlsf.ts:430:15
|
||||
(i32.clz
|
||||
;;@ ~lib/allocator/tlsf.ts:430:22
|
||||
(get_local $0)
|
||||
)
|
||||
)
|
||||
)
|
||||
@ -428,9 +412,9 @@
|
||||
)
|
||||
)
|
||||
(block
|
||||
(call $abort
|
||||
(call $~lib/env/abort
|
||||
(i32.const 0)
|
||||
(i32.const 4)
|
||||
(i32.const 8)
|
||||
(i32.const 158)
|
||||
(i32.const 4)
|
||||
)
|
||||
@ -448,9 +432,9 @@
|
||||
)
|
||||
)
|
||||
(block
|
||||
(call $abort
|
||||
(call $~lib/env/abort
|
||||
(i32.const 0)
|
||||
(i32.const 4)
|
||||
(i32.const 8)
|
||||
(i32.const 159)
|
||||
(i32.const 4)
|
||||
)
|
||||
@ -458,27 +442,24 @@
|
||||
)
|
||||
)
|
||||
;;@ ~lib/allocator/tlsf.ts:162:20
|
||||
(return
|
||||
;;@ ~lib/allocator/tlsf.ts:160:11
|
||||
(i32.load offset=96
|
||||
;;@ ~lib/allocator/tlsf.ts:161:6
|
||||
(i32.add
|
||||
(get_local $0)
|
||||
;;@ ~lib/allocator/tlsf.ts:161:32
|
||||
(i32.mul
|
||||
(i32.add
|
||||
;;@ ~lib/allocator/tlsf.ts:161:33
|
||||
(i32.mul
|
||||
(get_local $1)
|
||||
;;@ ~lib/allocator/tlsf.ts:161:38
|
||||
(i32.const 32)
|
||||
)
|
||||
;;@ ~lib/allocator/tlsf.ts:161:48
|
||||
(get_local $2)
|
||||
(i32.load offset=96
|
||||
;;@ ~lib/allocator/tlsf.ts:161:6
|
||||
(i32.add
|
||||
(get_local $0)
|
||||
;;@ ~lib/allocator/tlsf.ts:161:32
|
||||
(i32.mul
|
||||
(i32.add
|
||||
;;@ ~lib/allocator/tlsf.ts:161:33
|
||||
(i32.mul
|
||||
(get_local $1)
|
||||
;;@ ~lib/allocator/tlsf.ts:161:38
|
||||
(i32.const 32)
|
||||
)
|
||||
;;@ ~lib/allocator/tlsf.ts:161:61
|
||||
(i32.const 4)
|
||||
;;@ ~lib/allocator/tlsf.ts:161:48
|
||||
(get_local $2)
|
||||
)
|
||||
;;@ ~lib/allocator/tlsf.ts:161:61
|
||||
(i32.const 4)
|
||||
)
|
||||
)
|
||||
)
|
||||
@ -495,9 +476,9 @@
|
||||
)
|
||||
)
|
||||
(block
|
||||
(call $abort
|
||||
(call $~lib/env/abort
|
||||
(i32.const 0)
|
||||
(i32.const 4)
|
||||
(i32.const 8)
|
||||
(i32.const 167)
|
||||
(i32.const 4)
|
||||
)
|
||||
@ -515,9 +496,9 @@
|
||||
)
|
||||
)
|
||||
(block
|
||||
(call $abort
|
||||
(call $~lib/env/abort
|
||||
(i32.const 0)
|
||||
(i32.const 4)
|
||||
(i32.const 8)
|
||||
(i32.const 168)
|
||||
(i32.const 4)
|
||||
)
|
||||
@ -561,9 +542,9 @@
|
||||
)
|
||||
)
|
||||
(block
|
||||
(call $abort
|
||||
(call $~lib/env/abort
|
||||
(i32.const 0)
|
||||
(i32.const 4)
|
||||
(i32.const 8)
|
||||
(i32.const 138)
|
||||
(i32.const 4)
|
||||
)
|
||||
@ -571,18 +552,15 @@
|
||||
)
|
||||
)
|
||||
;;@ ~lib/allocator/tlsf.ts:139:68
|
||||
(return
|
||||
;;@ ~lib/allocator/tlsf.ts:139:11
|
||||
(i32.load offset=4
|
||||
;;@ ~lib/allocator/tlsf.ts:139:21
|
||||
(i32.add
|
||||
(get_local $0)
|
||||
;;@ ~lib/allocator/tlsf.ts:139:47
|
||||
(i32.mul
|
||||
(get_local $1)
|
||||
;;@ ~lib/allocator/tlsf.ts:139:52
|
||||
(i32.const 4)
|
||||
)
|
||||
(i32.load offset=4
|
||||
;;@ ~lib/allocator/tlsf.ts:139:21
|
||||
(i32.add
|
||||
(get_local $0)
|
||||
;;@ ~lib/allocator/tlsf.ts:139:47
|
||||
(i32.mul
|
||||
(get_local $1)
|
||||
;;@ ~lib/allocator/tlsf.ts:139:52
|
||||
(i32.const 4)
|
||||
)
|
||||
)
|
||||
)
|
||||
@ -599,9 +577,9 @@
|
||||
)
|
||||
)
|
||||
(block
|
||||
(call $abort
|
||||
(call $~lib/env/abort
|
||||
(i32.const 0)
|
||||
(i32.const 4)
|
||||
(i32.const 8)
|
||||
(i32.const 144)
|
||||
(i32.const 4)
|
||||
)
|
||||
@ -650,9 +628,9 @@
|
||||
)
|
||||
)
|
||||
(block
|
||||
(call $abort
|
||||
(call $~lib/env/abort
|
||||
(i32.const 0)
|
||||
(i32.const 4)
|
||||
(i32.const 8)
|
||||
(i32.const 258)
|
||||
(i32.const 4)
|
||||
)
|
||||
@ -694,9 +672,9 @@
|
||||
)
|
||||
)
|
||||
(block
|
||||
(call $abort
|
||||
(call $~lib/env/abort
|
||||
(i32.const 0)
|
||||
(i32.const 4)
|
||||
(i32.const 8)
|
||||
(i32.const 260)
|
||||
(i32.const 4)
|
||||
)
|
||||
@ -933,9 +911,9 @@
|
||||
)
|
||||
)
|
||||
(block
|
||||
(call $abort
|
||||
(call $~lib/env/abort
|
||||
(i32.const 0)
|
||||
(i32.const 4)
|
||||
(i32.const 8)
|
||||
(i32.const 81)
|
||||
(i32.const 4)
|
||||
)
|
||||
@ -943,33 +921,30 @@
|
||||
)
|
||||
)
|
||||
;;@ ~lib/allocator/tlsf.ts:84:4
|
||||
(return
|
||||
;;@ ~lib/allocator/tlsf.ts:82:11
|
||||
(if (result i32)
|
||||
(i32.eqz
|
||||
(tee_local $1
|
||||
;;@ ~lib/allocator/tlsf.ts:83:6
|
||||
(i32.load
|
||||
;;@ ~lib/allocator/tlsf.ts:83:18
|
||||
(i32.sub
|
||||
(get_local $0)
|
||||
;;@ ~lib/allocator/tlsf.ts:83:44
|
||||
(i32.const 4)
|
||||
)
|
||||
(if (result i32)
|
||||
(i32.eqz
|
||||
(tee_local $1
|
||||
;;@ ~lib/allocator/tlsf.ts:83:6
|
||||
(i32.load
|
||||
;;@ ~lib/allocator/tlsf.ts:83:18
|
||||
(i32.sub
|
||||
(get_local $0)
|
||||
;;@ ~lib/allocator/tlsf.ts:83:44
|
||||
(i32.const 4)
|
||||
)
|
||||
)
|
||||
)
|
||||
(block
|
||||
(call $abort
|
||||
(i32.const 0)
|
||||
(i32.const 4)
|
||||
(i32.const 82)
|
||||
(i32.const 11)
|
||||
)
|
||||
(unreachable)
|
||||
)
|
||||
(get_local $1)
|
||||
)
|
||||
(block
|
||||
(call $~lib/env/abort
|
||||
(i32.const 0)
|
||||
(i32.const 8)
|
||||
(i32.const 82)
|
||||
(i32.const 11)
|
||||
)
|
||||
(unreachable)
|
||||
)
|
||||
(get_local $1)
|
||||
)
|
||||
)
|
||||
(func $~lib/allocator/tlsf/Root#setJump (; 18 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32)
|
||||
@ -986,9 +961,9 @@
|
||||
)
|
||||
)
|
||||
(block
|
||||
(call $abort
|
||||
(call $~lib/env/abort
|
||||
(i32.const 0)
|
||||
(i32.const 4)
|
||||
(i32.const 8)
|
||||
(i32.const 334)
|
||||
(i32.const 4)
|
||||
)
|
||||
@ -1008,9 +983,9 @@
|
||||
)
|
||||
)
|
||||
(block
|
||||
(call $abort
|
||||
(call $~lib/env/abort
|
||||
(i32.const 0)
|
||||
(i32.const 4)
|
||||
(i32.const 8)
|
||||
(i32.const 335)
|
||||
(i32.const 4)
|
||||
)
|
||||
@ -1030,9 +1005,9 @@
|
||||
)
|
||||
)
|
||||
(block
|
||||
(call $abort
|
||||
(call $~lib/env/abort
|
||||
(i32.const 0)
|
||||
(i32.const 4)
|
||||
(i32.const 8)
|
||||
(i32.const 336)
|
||||
(i32.const 4)
|
||||
)
|
||||
@ -1061,7 +1036,6 @@
|
||||
(local $8 i32)
|
||||
(local $9 i32)
|
||||
(local $10 i32)
|
||||
(local $11 i32)
|
||||
;;@ ~lib/allocator/tlsf.ts:189:4
|
||||
(if
|
||||
(i32.eqz
|
||||
@ -1069,9 +1043,9 @@
|
||||
(get_local $1)
|
||||
)
|
||||
(block
|
||||
(call $abort
|
||||
(call $~lib/env/abort
|
||||
(i32.const 0)
|
||||
(i32.const 4)
|
||||
(i32.const 8)
|
||||
(i32.const 189)
|
||||
(i32.const 4)
|
||||
)
|
||||
@ -1096,9 +1070,9 @@
|
||||
)
|
||||
)
|
||||
(block
|
||||
(call $abort
|
||||
(call $~lib/env/abort
|
||||
(i32.const 0)
|
||||
(i32.const 4)
|
||||
(i32.const 8)
|
||||
(i32.const 191)
|
||||
(i32.const 4)
|
||||
)
|
||||
@ -1140,9 +1114,9 @@
|
||||
)
|
||||
)
|
||||
(block
|
||||
(call $abort
|
||||
(call $~lib/env/abort
|
||||
(i32.const 0)
|
||||
(i32.const 4)
|
||||
(i32.const 8)
|
||||
(i32.const 193)
|
||||
(i32.const 4)
|
||||
)
|
||||
@ -1162,9 +1136,9 @@
|
||||
)
|
||||
)
|
||||
(block
|
||||
(call $abort
|
||||
(call $~lib/env/abort
|
||||
(i32.const 0)
|
||||
(i32.const 4)
|
||||
(i32.const 8)
|
||||
(i32.const 197)
|
||||
(i32.const 23)
|
||||
)
|
||||
@ -1262,9 +1236,9 @@
|
||||
)
|
||||
)
|
||||
(block
|
||||
(call $abort
|
||||
(call $~lib/env/abort
|
||||
(i32.const 0)
|
||||
(i32.const 4)
|
||||
(i32.const 8)
|
||||
(i32.const 211)
|
||||
(i32.const 24)
|
||||
)
|
||||
@ -1291,9 +1265,9 @@
|
||||
)
|
||||
)
|
||||
(block
|
||||
(call $abort
|
||||
(call $~lib/env/abort
|
||||
(i32.const 0)
|
||||
(i32.const 4)
|
||||
(i32.const 8)
|
||||
(i32.const 213)
|
||||
(i32.const 6)
|
||||
)
|
||||
@ -1382,7 +1356,7 @@
|
||||
(i32.eqz
|
||||
;;@ ~lib/allocator/tlsf.ts:226:11
|
||||
(if (result i32)
|
||||
(tee_local $8
|
||||
(tee_local $7
|
||||
(i32.ge_u
|
||||
(get_local $3)
|
||||
;;@ ~lib/allocator/tlsf.ts:226:19
|
||||
@ -1395,13 +1369,13 @@
|
||||
;;@ ~lib/allocator/tlsf.ts:226:44
|
||||
(i32.const 1073741824)
|
||||
)
|
||||
(get_local $8)
|
||||
(get_local $7)
|
||||
)
|
||||
)
|
||||
(block
|
||||
(call $abort
|
||||
(call $~lib/env/abort
|
||||
(i32.const 0)
|
||||
(i32.const 4)
|
||||
(i32.const 8)
|
||||
(i32.const 226)
|
||||
(i32.const 4)
|
||||
)
|
||||
@ -1419,12 +1393,12 @@
|
||||
;;@ ~lib/allocator/tlsf.ts:230:24
|
||||
(block
|
||||
;;@ ~lib/allocator/tlsf.ts:231:6
|
||||
(set_local $9
|
||||
(set_local $8
|
||||
;;@ ~lib/allocator/tlsf.ts:231:11
|
||||
(i32.const 0)
|
||||
)
|
||||
;;@ ~lib/allocator/tlsf.ts:232:6
|
||||
(set_local $10
|
||||
(set_local $9
|
||||
;;@ ~lib/allocator/tlsf.ts:232:11
|
||||
(i32.div_u
|
||||
;;@ ~lib/allocator/tlsf.ts:232:17
|
||||
@ -1437,7 +1411,7 @@
|
||||
;;@ ~lib/allocator/tlsf.ts:233:11
|
||||
(block
|
||||
;;@ ~lib/allocator/tlsf.ts:234:6
|
||||
(set_local $9
|
||||
(set_local $8
|
||||
;;@ ~lib/allocator/tlsf.ts:234:11
|
||||
(call $~lib/allocator/tlsf/fls<usize>
|
||||
;;@ ~lib/allocator/tlsf.ts:234:22
|
||||
@ -1445,7 +1419,7 @@
|
||||
)
|
||||
)
|
||||
;;@ ~lib/allocator/tlsf.ts:235:6
|
||||
(set_local $10
|
||||
(set_local $9
|
||||
;;@ ~lib/allocator/tlsf.ts:235:11
|
||||
(i32.xor
|
||||
;;@ ~lib/allocator/tlsf.ts:235:17
|
||||
@ -1455,7 +1429,7 @@
|
||||
;;@ ~lib/allocator/tlsf.ts:235:26
|
||||
(i32.sub
|
||||
;;@ ~lib/allocator/tlsf.ts:235:27
|
||||
(get_local $9)
|
||||
(get_local $8)
|
||||
;;@ ~lib/allocator/tlsf.ts:235:32
|
||||
(i32.const 5)
|
||||
)
|
||||
@ -1470,9 +1444,9 @@
|
||||
)
|
||||
)
|
||||
;;@ ~lib/allocator/tlsf.ts:236:6
|
||||
(set_local $9
|
||||
(set_local $8
|
||||
(i32.sub
|
||||
(get_local $9)
|
||||
(get_local $8)
|
||||
;;@ ~lib/allocator/tlsf.ts:236:12
|
||||
(i32.sub
|
||||
(i32.const 8)
|
||||
@ -1484,15 +1458,15 @@
|
||||
)
|
||||
)
|
||||
;;@ ~lib/allocator/tlsf.ts:240:4
|
||||
(set_local $11
|
||||
(set_local $10
|
||||
;;@ ~lib/allocator/tlsf.ts:240:20
|
||||
(call $~lib/allocator/tlsf/Root#getHead
|
||||
;;@ ~lib/allocator/tlsf.ts:240:15
|
||||
(get_local $0)
|
||||
;;@ ~lib/allocator/tlsf.ts:240:28
|
||||
(get_local $9)
|
||||
(get_local $8)
|
||||
;;@ ~lib/allocator/tlsf.ts:240:32
|
||||
(get_local $10)
|
||||
(get_local $9)
|
||||
)
|
||||
)
|
||||
;;@ ~lib/allocator/tlsf.ts:241:4
|
||||
@ -1505,15 +1479,15 @@
|
||||
(i32.store offset=8
|
||||
(get_local $1)
|
||||
;;@ ~lib/allocator/tlsf.ts:242:17
|
||||
(get_local $11)
|
||||
(get_local $10)
|
||||
)
|
||||
;;@ ~lib/allocator/tlsf.ts:243:4
|
||||
(if
|
||||
;;@ ~lib/allocator/tlsf.ts:243:8
|
||||
(get_local $11)
|
||||
(get_local $10)
|
||||
;;@ ~lib/allocator/tlsf.ts:243:14
|
||||
(i32.store offset=4
|
||||
(get_local $11)
|
||||
(get_local $10)
|
||||
;;@ ~lib/allocator/tlsf.ts:243:26
|
||||
(get_local $1)
|
||||
)
|
||||
@ -1523,9 +1497,9 @@
|
||||
;;@ ~lib/allocator/tlsf.ts:244:4
|
||||
(get_local $0)
|
||||
;;@ ~lib/allocator/tlsf.ts:244:17
|
||||
(get_local $9)
|
||||
(get_local $8)
|
||||
;;@ ~lib/allocator/tlsf.ts:244:21
|
||||
(get_local $10)
|
||||
(get_local $9)
|
||||
;;@ ~lib/allocator/tlsf.ts:244:25
|
||||
(get_local $1)
|
||||
)
|
||||
@ -1541,7 +1515,7 @@
|
||||
;;@ ~lib/allocator/tlsf.ts:247:19
|
||||
(i32.const 1)
|
||||
;;@ ~lib/allocator/tlsf.ts:247:24
|
||||
(get_local $9)
|
||||
(get_local $8)
|
||||
)
|
||||
)
|
||||
)
|
||||
@ -1550,7 +1524,7 @@
|
||||
;;@ ~lib/allocator/tlsf.ts:248:4
|
||||
(get_local $0)
|
||||
;;@ ~lib/allocator/tlsf.ts:248:18
|
||||
(get_local $9)
|
||||
(get_local $8)
|
||||
;;@ ~lib/allocator/tlsf.ts:248:22
|
||||
(i32.or
|
||||
;;@ ~lib/allocator/tlsf.ts:248:27
|
||||
@ -1558,14 +1532,14 @@
|
||||
;;@ ~lib/allocator/tlsf.ts:248:22
|
||||
(get_local $0)
|
||||
;;@ ~lib/allocator/tlsf.ts:248:36
|
||||
(get_local $9)
|
||||
(get_local $8)
|
||||
)
|
||||
;;@ ~lib/allocator/tlsf.ts:248:42
|
||||
(i32.shl
|
||||
;;@ ~lib/allocator/tlsf.ts:248:43
|
||||
(i32.const 1)
|
||||
;;@ ~lib/allocator/tlsf.ts:248:48
|
||||
(get_local $10)
|
||||
(get_local $9)
|
||||
)
|
||||
)
|
||||
)
|
||||
@ -1574,7 +1548,7 @@
|
||||
(local $1 i32)
|
||||
(local $2 i32)
|
||||
(local $3 i32)
|
||||
;;@ ~lib/allocator/tlsf.ts:491:47
|
||||
;;@ ~lib/allocator/tlsf.ts:492:2
|
||||
(if
|
||||
;;@ ~lib/allocator/tlsf.ts:492:6
|
||||
(get_local $0)
|
||||
@ -1623,9 +1597,9 @@
|
||||
)
|
||||
)
|
||||
(block
|
||||
(call $abort
|
||||
(call $~lib/env/abort
|
||||
(i32.const 0)
|
||||
(i32.const 4)
|
||||
(i32.const 8)
|
||||
(i32.const 497)
|
||||
(i32.const 6)
|
||||
)
|
||||
@ -1684,7 +1658,7 @@
|
||||
(local $2 i32)
|
||||
(local $3 i32)
|
||||
(local $4 i32)
|
||||
;;@ assembly/ugc.ts:163:15
|
||||
;;@ assembly/ugc.ts:165:4
|
||||
(block $break|0
|
||||
(block $case2|0
|
||||
(block $case1|0
|
||||
@ -1997,18 +1971,16 @@
|
||||
)
|
||||
)
|
||||
(func $assembly/ugc/gc_pause (; 25 ;) (type $v)
|
||||
;;@ assembly/ugc.ts:254:33
|
||||
;;@ assembly/ugc.ts:255:2
|
||||
(call $assembly/ugc/Control#set:paused
|
||||
;;@ assembly/ugc.ts:255:2
|
||||
(get_global $assembly/ugc/GC)
|
||||
;;@ assembly/ugc.ts:255:14
|
||||
(i32.const 1)
|
||||
)
|
||||
)
|
||||
(func $assembly/ugc/gc_resume (; 26 ;) (type $v)
|
||||
;;@ assembly/ugc.ts:259:34
|
||||
;;@ assembly/ugc.ts:260:2
|
||||
(call $assembly/ugc/Control#set:paused
|
||||
;;@ assembly/ugc.ts:260:2
|
||||
(get_global $assembly/ugc/GC)
|
||||
;;@ assembly/ugc.ts:260:14
|
||||
(i32.const 0)
|
||||
@ -2031,9 +2003,9 @@
|
||||
)
|
||||
)
|
||||
(block
|
||||
(call $abort
|
||||
(call $~lib/env/abort
|
||||
(i32.const 0)
|
||||
(i32.const 4)
|
||||
(i32.const 8)
|
||||
(i32.const 122)
|
||||
(i32.const 0)
|
||||
)
|
||||
|
1798
lib/parse/build/index.wat
Normal file
1798
lib/parse/build/index.wat
Normal file
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -5,8 +5,8 @@
|
||||
"main": "index.js",
|
||||
"types": "index.d.ts",
|
||||
"scripts": {
|
||||
"build:as": "asc assembly/index.ts -O3 -b build/index.wasm --noMemory --importMemory --noDebug --sourceMap --validate",
|
||||
"build": "npm run build:as && webpack --mode production --display-modules",
|
||||
"asbuild": "asc assembly/index.ts -O3 -b build/index.wasm -t build/index.wat --importMemory --noDebug --sourceMap --validate",
|
||||
"build": "npm run asbuild && webpack --mode production --display-modules",
|
||||
"test": "ts-node tests/"
|
||||
},
|
||||
"files": [
|
||||
|
@ -69,7 +69,9 @@ export enum CommonFlags {
|
||||
/** Is a trampoline. */
|
||||
TRAMPOLINE = 1 << 25,
|
||||
/** Is a virtual method. */
|
||||
VIRTUAL = 1 << 26
|
||||
VIRTUAL = 1 << 26,
|
||||
/** Is the main function. */
|
||||
MAIN = 1 << 27
|
||||
}
|
||||
|
||||
/** Path delimiter inserted between file system levels. */
|
||||
|
139
src/compiler.ts
139
src/compiler.ts
@ -33,7 +33,10 @@ import {
|
||||
getConstValueF32,
|
||||
getConstValueF64,
|
||||
getFunctionBody,
|
||||
getGetLocalIndex
|
||||
getGetLocalIndex,
|
||||
getBlockChildCount,
|
||||
getBlockChild,
|
||||
getBlockName
|
||||
} from "./module";
|
||||
|
||||
import {
|
||||
@ -167,8 +170,6 @@ export class Options {
|
||||
noTreeShaking: bool = false;
|
||||
/** If true, replaces assertions with nops. */
|
||||
noAssert: bool = false;
|
||||
/** If true, does not set up a memory. */
|
||||
noMemory: bool = false;
|
||||
/** If true, imports the memory provided by the embedder. */
|
||||
importMemory: bool = false;
|
||||
/** If true, imports the function table provided by the embedder. */
|
||||
@ -254,9 +255,9 @@ export class Compiler extends DiagnosticEmitter {
|
||||
/** Current type in compilation. */
|
||||
currentType: Type = Type.void;
|
||||
/** Start function being compiled. */
|
||||
startFunction: Function;
|
||||
startFunctionInstance: Function;
|
||||
/** Start function statements. */
|
||||
startFunctionBody: ExpressionRef[] = [];
|
||||
startFunctionBody: ExpressionRef[];
|
||||
/** Counting memory offset. */
|
||||
memoryOffset: I64;
|
||||
/** Memory segments being compiled. */
|
||||
@ -298,15 +299,11 @@ export class Compiler extends DiagnosticEmitter {
|
||||
// initialize lookup maps, built-ins, imports, exports, etc.
|
||||
program.initialize(options);
|
||||
|
||||
// set up the start function wrapping top-level statements, of all files.
|
||||
var startFunctionPrototype = assert(program.elementsLookup.get("start"));
|
||||
assert(startFunctionPrototype.kind == ElementKind.FUNCTION_PROTOTYPE);
|
||||
var startFunctionInstance = new Function(
|
||||
<FunctionPrototype>startFunctionPrototype,
|
||||
startFunctionPrototype.internalName,
|
||||
new Signature([], Type.void)
|
||||
);
|
||||
this.startFunction = startFunctionInstance;
|
||||
// set up the start function
|
||||
var startFunctionInstance = new Function(program.startFunction, "start", new Signature([], Type.void));
|
||||
this.startFunctionInstance = startFunctionInstance;
|
||||
var startFunctionBody = new Array<ExpressionRef>();
|
||||
this.startFunctionBody = startFunctionBody;
|
||||
this.currentFunction = startFunctionInstance;
|
||||
|
||||
// compile entry file(s) while traversing reachable elements
|
||||
@ -315,9 +312,8 @@ export class Compiler extends DiagnosticEmitter {
|
||||
if (sources[i].isEntry) this.compileSource(sources[i]);
|
||||
}
|
||||
|
||||
// compile the start function if not empty
|
||||
var startFunctionBody = this.startFunctionBody;
|
||||
if (startFunctionBody.length) {
|
||||
// compile the start function if not empty or called by main
|
||||
if (startFunctionBody.length || program.mainFunction !== null) {
|
||||
let signature = startFunctionInstance.signature;
|
||||
let funcRef = module.addFunction(
|
||||
startFunctionInstance.internalName,
|
||||
@ -330,43 +326,41 @@ export class Compiler extends DiagnosticEmitter {
|
||||
module.createBlock(null, startFunctionBody)
|
||||
);
|
||||
startFunctionInstance.finalize(module, funcRef);
|
||||
module.setStart(funcRef);
|
||||
if (!program.mainFunction) module.setStart(funcRef);
|
||||
}
|
||||
|
||||
// set up static memory segments and the heap base pointer
|
||||
if (!options.noMemory) {
|
||||
let memoryOffset = this.memoryOffset;
|
||||
memoryOffset = i64_align(memoryOffset, options.usizeType.byteSize);
|
||||
this.memoryOffset = memoryOffset;
|
||||
if (options.isWasm64) {
|
||||
module.addGlobal(
|
||||
"HEAP_BASE",
|
||||
NativeType.I64,
|
||||
false,
|
||||
module.createI64(i64_low(memoryOffset), i64_high(memoryOffset))
|
||||
);
|
||||
} else {
|
||||
module.addGlobal(
|
||||
"HEAP_BASE",
|
||||
NativeType.I32,
|
||||
false,
|
||||
module.createI32(i64_low(memoryOffset))
|
||||
);
|
||||
}
|
||||
|
||||
// determine initial page size
|
||||
let pages = i64_shr_u(i64_align(memoryOffset, 0x10000), i64_new(16, 0));
|
||||
module.setMemory(
|
||||
i64_low(pages),
|
||||
this.options.isWasm64
|
||||
? Module.MAX_MEMORY_WASM64
|
||||
: Module.MAX_MEMORY_WASM32,
|
||||
this.memorySegments,
|
||||
options.target,
|
||||
"memory"
|
||||
var memoryOffset = this.memoryOffset;
|
||||
memoryOffset = i64_align(memoryOffset, options.usizeType.byteSize);
|
||||
this.memoryOffset = memoryOffset;
|
||||
if (options.isWasm64) {
|
||||
module.addGlobal(
|
||||
"HEAP_BASE",
|
||||
NativeType.I64,
|
||||
false,
|
||||
module.createI64(i64_low(memoryOffset), i64_high(memoryOffset))
|
||||
);
|
||||
} else {
|
||||
module.addGlobal(
|
||||
"HEAP_BASE",
|
||||
NativeType.I32,
|
||||
false,
|
||||
module.createI32(i64_low(memoryOffset))
|
||||
);
|
||||
}
|
||||
|
||||
// determine initial page size
|
||||
var pages = i64_shr_u(i64_align(memoryOffset, 0x10000), i64_new(16, 0));
|
||||
module.setMemory(
|
||||
i64_low(pages),
|
||||
this.options.isWasm64
|
||||
? Module.MAX_MEMORY_WASM64
|
||||
: Module.MAX_MEMORY_WASM32,
|
||||
this.memorySegments,
|
||||
options.target,
|
||||
"memory"
|
||||
);
|
||||
|
||||
// import memory if requested (default memory is named '0' by Binaryen)
|
||||
if (options.importMemory) module.addMemoryImport("0", "env", "memory");
|
||||
|
||||
@ -415,7 +409,7 @@ export class Compiler extends DiagnosticEmitter {
|
||||
// compile top-level statements
|
||||
var noTreeShaking = this.options.noTreeShaking;
|
||||
var isEntry = source.isEntry;
|
||||
var startFunction = this.startFunction;
|
||||
var startFunctionInstance = this.startFunctionInstance;
|
||||
var startFunctionBody = this.startFunctionBody;
|
||||
var statements = source.statements;
|
||||
for (let i = 0, k = statements.length; i < k; ++i) {
|
||||
@ -478,7 +472,7 @@ export class Compiler extends DiagnosticEmitter {
|
||||
}
|
||||
default: { // otherwise a top-level statement that is part of the start function's body
|
||||
let previousFunction = this.currentFunction;
|
||||
this.currentFunction = startFunction;
|
||||
this.currentFunction = startFunctionInstance;
|
||||
startFunctionBody.push(this.compileStatement(statement));
|
||||
this.currentFunction = previousFunction;
|
||||
break;
|
||||
@ -900,7 +894,7 @@ export class Compiler extends DiagnosticEmitter {
|
||||
let flow = instance.flow;
|
||||
let stmt: ExpressionRef;
|
||||
if (body.kind == NodeKind.EXPRESSION) { // () => expression
|
||||
assert(!instance.isAny(CommonFlags.CONSTRUCTOR | CommonFlags.GET | CommonFlags.SET));
|
||||
assert(!instance.isAny(CommonFlags.CONSTRUCTOR | CommonFlags.GET | CommonFlags.SET | CommonFlags.MAIN));
|
||||
assert(instance.is(CommonFlags.ARROW));
|
||||
stmt = this.compileExpression(
|
||||
(<ExpressionStatement>body).expression,
|
||||
@ -913,7 +907,8 @@ export class Compiler extends DiagnosticEmitter {
|
||||
flow.finalize();
|
||||
} else {
|
||||
assert(body.kind == NodeKind.BLOCK);
|
||||
stmt = this.compileStatement(body);
|
||||
let stmts = this.compileStatements((<BlockStatement>body).statements);
|
||||
if (instance.is(CommonFlags.MAIN)) stmts.unshift(module.createCall("start", null, NativeType.None));
|
||||
flow.finalize();
|
||||
if (isConstructor) {
|
||||
let nativeSizeType = this.options.nativeSizeType;
|
||||
@ -924,21 +919,15 @@ export class Compiler extends DiagnosticEmitter {
|
||||
|
||||
// if all branches are guaranteed to allocate, skip the final conditional allocation
|
||||
if (flow.is(FlowFlags.ALLOCATES)) {
|
||||
stmt = module.createBlock(null, [
|
||||
stmt,
|
||||
module.createGetLocal(0, nativeSizeType)
|
||||
], nativeSizeType);
|
||||
stmts.push(module.createGetLocal(0, nativeSizeType));
|
||||
|
||||
// if not all branches are guaranteed to allocate, also append a conditional allocation
|
||||
} else {
|
||||
let parent = assert(instance.parent);
|
||||
assert(parent.kind == ElementKind.CLASS);
|
||||
stmt = module.createBlock(null, [
|
||||
stmt,
|
||||
module.createTeeLocal(0,
|
||||
this.makeConditionalAllocate(<Class>parent, declaration.name)
|
||||
)
|
||||
], nativeSizeType);
|
||||
stmts.push(module.createTeeLocal(0,
|
||||
this.makeConditionalAllocate(<Class>parent, declaration.name)
|
||||
));
|
||||
}
|
||||
}
|
||||
|
||||
@ -949,6 +938,11 @@ export class Compiler extends DiagnosticEmitter {
|
||||
declaration.signature.returnType.range
|
||||
);
|
||||
}
|
||||
stmt = !stmts.length
|
||||
? module.createNop()
|
||||
: stmts.length == 1
|
||||
? stmts[0]
|
||||
: module.createBlock(null, stmts, returnType.toNativeType());
|
||||
}
|
||||
this.currentFunction = previousFunction;
|
||||
|
||||
@ -1451,7 +1445,7 @@ export class Compiler extends DiagnosticEmitter {
|
||||
case NodeKind.TYPEDECLARATION: {
|
||||
// type declarations must be top-level because function bodies are evaluated when
|
||||
// reachaable only.
|
||||
if (this.currentFunction == this.startFunction) {
|
||||
if (this.currentFunction == this.startFunctionInstance) {
|
||||
return module.createNop();
|
||||
}
|
||||
// otherwise fall-through
|
||||
@ -1468,16 +1462,23 @@ export class Compiler extends DiagnosticEmitter {
|
||||
compileStatements(statements: Statement[]): ExpressionRef[] {
|
||||
var numStatements = statements.length;
|
||||
var stmts = new Array<ExpressionRef>(numStatements);
|
||||
var count = 0;
|
||||
stmts.length = 0;
|
||||
var flow = this.currentFunction.flow;
|
||||
for (let i = 0; i < numStatements; ++i) {
|
||||
let stmt = this.compileStatement(statements[i]);
|
||||
if (getExpressionId(stmt) != ExpressionId.Nop) {
|
||||
stmts[count++] = stmt;
|
||||
if (flow.isAny(FlowFlags.ANY_TERMINATING)) break;
|
||||
switch (getExpressionId(stmt)) {
|
||||
case ExpressionId.Block: {
|
||||
if (!getBlockName(stmt)) {
|
||||
for (let j = 0, k = getBlockChildCount(stmt); j < k; ++j) stmts.push(getBlockChild(stmt, j));
|
||||
break;
|
||||
}
|
||||
// fall-through
|
||||
}
|
||||
default: stmts.push(stmt);
|
||||
case ExpressionId.Nop:
|
||||
}
|
||||
if (flow.isAny(FlowFlags.ANY_TERMINATING)) break;
|
||||
}
|
||||
stmts.length = count;
|
||||
return stmts;
|
||||
}
|
||||
|
||||
@ -1949,7 +1950,7 @@ export class Compiler extends DiagnosticEmitter {
|
||||
|
||||
// top-level variables and constants become globals
|
||||
if (isKnownGlobal || (
|
||||
currentFunction == this.startFunction &&
|
||||
currentFunction == this.startFunctionInstance &&
|
||||
statement.parent && statement.parent.kind == NodeKind.SOURCE
|
||||
)) {
|
||||
// NOTE that the above condition also covers top-level variables declared with 'let', even
|
||||
|
@ -97,11 +97,6 @@ export function setNoAssert(options: Options, noAssert: bool): void {
|
||||
options.noAssert = noAssert;
|
||||
}
|
||||
|
||||
/** Sets the `noMemory` option. */
|
||||
export function setNoMemory(options: Options, noMemory: bool): void {
|
||||
options.noMemory = noMemory;
|
||||
}
|
||||
|
||||
/** Sets the `importMemory` option. */
|
||||
export function setImportMemory(options: Options, importMemory: bool): void {
|
||||
options.importMemory = importMemory;
|
||||
|
@ -329,6 +329,10 @@ export class Program extends DiagnosticEmitter {
|
||||
arrayBufferViewPrototype: InterfacePrototype | null = null;
|
||||
/** String instance reference. */
|
||||
stringInstance: Class | null = null;
|
||||
/** Start function reference. */
|
||||
startFunction: FunctionPrototype;
|
||||
/** Main function reference. */
|
||||
mainFunction: FunctionPrototype | null = null;
|
||||
|
||||
/** Target expression of the previously resolved property or element access. */
|
||||
resolvedThisExpression: Expression | null = null;
|
||||
@ -592,6 +596,25 @@ export class Program extends DiagnosticEmitter {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// register 'start'
|
||||
{
|
||||
let element = <Element>assert(this.elementsLookup.get("start"));
|
||||
assert(element.kind == ElementKind.FUNCTION_PROTOTYPE);
|
||||
this.startFunction = <FunctionPrototype>element;
|
||||
}
|
||||
|
||||
// register 'main' if present
|
||||
if (this.moduleLevelExports.has("main")) {
|
||||
let element = <Element>this.moduleLevelExports.get("main");
|
||||
if (
|
||||
element.kind == ElementKind.FUNCTION_PROTOTYPE &&
|
||||
!(<FunctionPrototype>element).isAny(CommonFlags.GENERIC | CommonFlags.AMBIENT)
|
||||
) {
|
||||
(<FunctionPrototype>element).set(CommonFlags.MAIN);
|
||||
this.mainFunction = <FunctionPrototype>element;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/** Tries to resolve an import by traversing exports and queued exports. */
|
||||
@ -758,15 +781,15 @@ export class Program extends DiagnosticEmitter {
|
||||
this.fileLevelExports.set(internalName, prototype);
|
||||
this.currentFilespace.members.set(simpleName, prototype);
|
||||
if (prototype.is(CommonFlags.EXPORT) && declaration.range.source.isEntry) {
|
||||
if (this.moduleLevelExports.has(internalName)) {
|
||||
if (this.moduleLevelExports.has(simpleName)) {
|
||||
this.error(
|
||||
DiagnosticCode.Export_declaration_conflicts_with_exported_declaration_of_0,
|
||||
declaration.name.range, internalName
|
||||
declaration.name.range, (<Element>this.moduleLevelExports.get(simpleName)).internalName
|
||||
);
|
||||
return;
|
||||
}
|
||||
prototype.set(CommonFlags.MODULE_EXPORT);
|
||||
this.moduleLevelExports.set(internalName, prototype);
|
||||
this.moduleLevelExports.set(simpleName, prototype);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1192,15 +1215,15 @@ export class Program extends DiagnosticEmitter {
|
||||
this.fileLevelExports.set(internalName, element);
|
||||
this.currentFilespace.members.set(simpleName, element);
|
||||
if (declaration.range.source.isEntry) {
|
||||
if (this.moduleLevelExports.has(internalName)) {
|
||||
if (this.moduleLevelExports.has(simpleName)) {
|
||||
this.error(
|
||||
DiagnosticCode.Export_declaration_conflicts_with_exported_declaration_of_0,
|
||||
declaration.name.range, internalName
|
||||
declaration.name.range, (<Element>this.moduleLevelExports.get(simpleName)).internalName
|
||||
);
|
||||
return;
|
||||
}
|
||||
element.set(CommonFlags.MODULE_EXPORT);
|
||||
this.moduleLevelExports.set(internalName, element);
|
||||
this.moduleLevelExports.set(simpleName, element);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1448,15 +1471,15 @@ export class Program extends DiagnosticEmitter {
|
||||
this.fileLevelExports.set(internalName, prototype);
|
||||
this.currentFilespace.members.set(simpleName, prototype);
|
||||
if (declaration.range.source.isEntry) {
|
||||
if (this.moduleLevelExports.has(internalName)) {
|
||||
if (this.moduleLevelExports.has(simpleName)) {
|
||||
this.error(
|
||||
DiagnosticCode.Duplicate_identifier_0,
|
||||
declaration.name.range, internalName
|
||||
declaration.name.range, (<Element>this.moduleLevelExports.get(simpleName)).internalName
|
||||
);
|
||||
return;
|
||||
}
|
||||
prototype.set(CommonFlags.MODULE_EXPORT);
|
||||
this.moduleLevelExports.set(internalName, prototype);
|
||||
this.moduleLevelExports.set(simpleName, prototype);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1609,15 +1632,15 @@ export class Program extends DiagnosticEmitter {
|
||||
this.fileLevelExports.set(internalName, prototype);
|
||||
this.currentFilespace.members.set(simpleName, prototype);
|
||||
if (declaration.range.source.isEntry) {
|
||||
if (this.moduleLevelExports.has(internalName)) {
|
||||
if (this.moduleLevelExports.has(simpleName)) {
|
||||
this.error(
|
||||
DiagnosticCode.Duplicate_identifier_0,
|
||||
declaration.name.range, internalName
|
||||
declaration.name.range, (<Element>this.moduleLevelExports.get(simpleName)).internalName
|
||||
);
|
||||
return;
|
||||
}
|
||||
prototype.set(CommonFlags.MODULE_EXPORT);
|
||||
this.moduleLevelExports.set(internalName, prototype);
|
||||
this.moduleLevelExports.set(simpleName, prototype);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1694,15 +1717,15 @@ export class Program extends DiagnosticEmitter {
|
||||
}
|
||||
this.currentFilespace.members.set(simpleName, namespace);
|
||||
if (declaration.range.source.isEntry) {
|
||||
if (this.moduleLevelExports.has(internalName)) {
|
||||
if (this.moduleLevelExports.has(simpleName)) {
|
||||
this.error(
|
||||
DiagnosticCode.Duplicate_identifier_0,
|
||||
declaration.name.range, internalName
|
||||
declaration.name.range, (<Element>this.moduleLevelExports.get(simpleName)).internalName
|
||||
);
|
||||
return;
|
||||
}
|
||||
namespace.set(CommonFlags.MODULE_EXPORT);
|
||||
this.moduleLevelExports.set(internalName, namespace);
|
||||
this.moduleLevelExports.set(simpleName, namespace);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1822,15 +1845,15 @@ export class Program extends DiagnosticEmitter {
|
||||
}
|
||||
this.currentFilespace.members.set(simpleName, global);
|
||||
if (declaration.range.source.isEntry) {
|
||||
if (this.moduleLevelExports.has(internalName)) {
|
||||
if (this.moduleLevelExports.has(simpleName)) {
|
||||
this.error(
|
||||
DiagnosticCode.Duplicate_identifier_0,
|
||||
declaration.name.range, internalName
|
||||
declaration.name.range, (<Element>this.moduleLevelExports.get(simpleName)).internalName
|
||||
);
|
||||
continue;
|
||||
}
|
||||
global.set(CommonFlags.MODULE_EXPORT);
|
||||
this.moduleLevelExports.set(internalName, global);
|
||||
this.moduleLevelExports.set(simpleName, global);
|
||||
}
|
||||
}
|
||||
this.checkGlobalOptions(global, declaration);
|
||||
|
@ -33,13 +33,11 @@
|
||||
(local $5 i32)
|
||||
(local $6 i32)
|
||||
(local $7 i32)
|
||||
(block
|
||||
(set_local $0
|
||||
(f32.const -1)
|
||||
)
|
||||
(set_local $1
|
||||
(f64.const -2)
|
||||
)
|
||||
(set_local $0
|
||||
(f32.const -1)
|
||||
)
|
||||
(set_local $1
|
||||
(f64.const -2)
|
||||
)
|
||||
(if
|
||||
(i32.eqz
|
||||
|
17
tests/compiler/main.optimized.wat
Normal file
17
tests/compiler/main.optimized.wat
Normal file
@ -0,0 +1,17 @@
|
||||
(module
|
||||
(type $iii (func (param i32 i32) (result i32)))
|
||||
(type $v (func))
|
||||
(global $main/code (mut i32) (i32.const 0))
|
||||
(memory $0 1)
|
||||
(export "main" (func $main/main))
|
||||
(export "memory" (memory $0))
|
||||
(func $main/main (; 0 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
|
||||
(call $start)
|
||||
(get_global $main/code)
|
||||
)
|
||||
(func $start (; 1 ;) (type $v)
|
||||
(set_global $main/code
|
||||
(i32.const 1)
|
||||
)
|
||||
)
|
||||
)
|
6
tests/compiler/main.ts
Normal file
6
tests/compiler/main.ts
Normal file
@ -0,0 +1,6 @@
|
||||
var code = 0;
|
||||
code = 1;
|
||||
|
||||
export function main(argc: i32, argv: usize): i32 {
|
||||
return code;
|
||||
}
|
18
tests/compiler/main.untouched.wat
Normal file
18
tests/compiler/main.untouched.wat
Normal file
@ -0,0 +1,18 @@
|
||||
(module
|
||||
(type $iii (func (param i32 i32) (result i32)))
|
||||
(type $v (func))
|
||||
(global $main/code (mut i32) (i32.const 0))
|
||||
(global $HEAP_BASE i32 (i32.const 8))
|
||||
(memory $0 1)
|
||||
(export "main" (func $main/main))
|
||||
(export "memory" (memory $0))
|
||||
(func $main/main (; 0 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
|
||||
(call $start)
|
||||
(get_global $main/code)
|
||||
)
|
||||
(func $start (; 1 ;) (type $v)
|
||||
(set_global $main/code
|
||||
(i32.const 1)
|
||||
)
|
||||
)
|
||||
)
|
@ -413,13 +413,11 @@
|
||||
(get_local $6)
|
||||
)
|
||||
)
|
||||
(block
|
||||
(set_local $10
|
||||
(f64.const 0)
|
||||
)
|
||||
(set_local $11
|
||||
(f64.const 0)
|
||||
)
|
||||
(set_local $10
|
||||
(f64.const 0)
|
||||
)
|
||||
(set_local $11
|
||||
(f64.const 0)
|
||||
)
|
||||
(set_local $14
|
||||
(i32.const 0)
|
||||
|
@ -574,72 +574,70 @@
|
||||
(local $2 i32)
|
||||
(local $3 i32)
|
||||
(local $4 i32)
|
||||
(block
|
||||
(if
|
||||
(i32.gt_u
|
||||
(get_local $1)
|
||||
(i32.const 268435454)
|
||||
)
|
||||
(block
|
||||
(call $~lib/env/abort
|
||||
(i32.const 0)
|
||||
(i32.const 92)
|
||||
(i32.const 23)
|
||||
(i32.const 39)
|
||||
)
|
||||
(unreachable)
|
||||
)
|
||||
(if
|
||||
(i32.gt_u
|
||||
(get_local $1)
|
||||
(i32.const 268435454)
|
||||
)
|
||||
(set_local $2
|
||||
(i32.shl
|
||||
(get_local $1)
|
||||
(i32.const 2)
|
||||
(block
|
||||
(call $~lib/env/abort
|
||||
(i32.const 0)
|
||||
(i32.const 92)
|
||||
(i32.const 23)
|
||||
(i32.const 39)
|
||||
)
|
||||
(unreachable)
|
||||
)
|
||||
(set_local $3
|
||||
(call $~lib/internal/arraybuffer/allocUnsafe
|
||||
(get_local $2)
|
||||
)
|
||||
)
|
||||
(set_local $2
|
||||
(i32.shl
|
||||
(get_local $1)
|
||||
(i32.const 2)
|
||||
)
|
||||
(i32.store
|
||||
(tee_local $0
|
||||
(if (result i32)
|
||||
(get_local $0)
|
||||
(get_local $0)
|
||||
(tee_local $0
|
||||
(block (result i32)
|
||||
(set_local $4
|
||||
(call $~lib/allocator/arena/allocate_memory
|
||||
(i32.const 8)
|
||||
)
|
||||
)
|
||||
(set_local $3
|
||||
(call $~lib/internal/arraybuffer/allocUnsafe
|
||||
(get_local $2)
|
||||
)
|
||||
)
|
||||
(i32.store
|
||||
(tee_local $0
|
||||
(if (result i32)
|
||||
(get_local $0)
|
||||
(get_local $0)
|
||||
(tee_local $0
|
||||
(block (result i32)
|
||||
(set_local $4
|
||||
(call $~lib/allocator/arena/allocate_memory
|
||||
(i32.const 8)
|
||||
)
|
||||
(i32.store
|
||||
(get_local $4)
|
||||
(i32.const 0)
|
||||
)
|
||||
(i32.store offset=4
|
||||
(get_local $4)
|
||||
(i32.const 0)
|
||||
)
|
||||
(get_local $4)
|
||||
)
|
||||
(i32.store
|
||||
(get_local $4)
|
||||
(i32.const 0)
|
||||
)
|
||||
(i32.store offset=4
|
||||
(get_local $4)
|
||||
(i32.const 0)
|
||||
)
|
||||
(get_local $4)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(get_local $3)
|
||||
)
|
||||
(i32.store offset=4
|
||||
(get_local $0)
|
||||
(get_local $1)
|
||||
)
|
||||
(call $~lib/memory/set_memory
|
||||
(i32.add
|
||||
(get_local $3)
|
||||
(i32.const 8)
|
||||
)
|
||||
(i32.store offset=4
|
||||
(get_local $0)
|
||||
(get_local $1)
|
||||
)
|
||||
(call $~lib/memory/set_memory
|
||||
(i32.add
|
||||
(get_local $3)
|
||||
(i32.const 8)
|
||||
)
|
||||
(i32.const 0)
|
||||
(get_local $2)
|
||||
)
|
||||
(i32.const 0)
|
||||
(get_local $2)
|
||||
)
|
||||
(get_local $0)
|
||||
)
|
||||
|
@ -597,72 +597,70 @@
|
||||
(local $2 i32)
|
||||
(local $3 i32)
|
||||
(local $4 i32)
|
||||
(block
|
||||
(if
|
||||
(i32.gt_u
|
||||
(get_local $1)
|
||||
(i32.const 268435454)
|
||||
)
|
||||
(block
|
||||
(call $~lib/env/abort
|
||||
(i32.const 0)
|
||||
(i32.const 8)
|
||||
(i32.const 23)
|
||||
(i32.const 39)
|
||||
)
|
||||
(unreachable)
|
||||
)
|
||||
(if
|
||||
(i32.gt_u
|
||||
(get_local $1)
|
||||
(i32.const 268435454)
|
||||
)
|
||||
(set_local $2
|
||||
(i32.shl
|
||||
(get_local $1)
|
||||
(i32.const 2)
|
||||
(block
|
||||
(call $~lib/env/abort
|
||||
(i32.const 0)
|
||||
(i32.const 8)
|
||||
(i32.const 23)
|
||||
(i32.const 39)
|
||||
)
|
||||
(unreachable)
|
||||
)
|
||||
(set_local $3
|
||||
(call $~lib/internal/arraybuffer/allocUnsafe
|
||||
(get_local $2)
|
||||
)
|
||||
)
|
||||
(set_local $2
|
||||
(i32.shl
|
||||
(get_local $1)
|
||||
(i32.const 2)
|
||||
)
|
||||
(i32.store
|
||||
(tee_local $0
|
||||
(if (result i32)
|
||||
(get_local $0)
|
||||
(get_local $0)
|
||||
(tee_local $0
|
||||
(block (result i32)
|
||||
(set_local $4
|
||||
(call $~lib/allocator/arena/allocate_memory
|
||||
(i32.const 8)
|
||||
)
|
||||
)
|
||||
(set_local $3
|
||||
(call $~lib/internal/arraybuffer/allocUnsafe
|
||||
(get_local $2)
|
||||
)
|
||||
)
|
||||
(i32.store
|
||||
(tee_local $0
|
||||
(if (result i32)
|
||||
(get_local $0)
|
||||
(get_local $0)
|
||||
(tee_local $0
|
||||
(block (result i32)
|
||||
(set_local $4
|
||||
(call $~lib/allocator/arena/allocate_memory
|
||||
(i32.const 8)
|
||||
)
|
||||
(i32.store
|
||||
(get_local $4)
|
||||
(i32.const 0)
|
||||
)
|
||||
(i32.store offset=4
|
||||
(get_local $4)
|
||||
(i32.const 0)
|
||||
)
|
||||
(get_local $4)
|
||||
)
|
||||
(i32.store
|
||||
(get_local $4)
|
||||
(i32.const 0)
|
||||
)
|
||||
(i32.store offset=4
|
||||
(get_local $4)
|
||||
(i32.const 0)
|
||||
)
|
||||
(get_local $4)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(get_local $3)
|
||||
)
|
||||
(i32.store offset=4
|
||||
(get_local $0)
|
||||
(get_local $1)
|
||||
)
|
||||
(call $~lib/memory/set_memory
|
||||
(i32.add
|
||||
(get_local $3)
|
||||
(i32.const 8)
|
||||
)
|
||||
(i32.store offset=4
|
||||
(get_local $0)
|
||||
(get_local $1)
|
||||
)
|
||||
(call $~lib/memory/set_memory
|
||||
(i32.add
|
||||
(get_local $3)
|
||||
(i32.const 8)
|
||||
)
|
||||
(i32.const 0)
|
||||
(get_local $2)
|
||||
)
|
||||
(i32.const 0)
|
||||
(get_local $2)
|
||||
)
|
||||
(get_local $0)
|
||||
)
|
||||
@ -4292,72 +4290,70 @@
|
||||
(local $2 i32)
|
||||
(local $3 i32)
|
||||
(local $4 i32)
|
||||
(block
|
||||
(if
|
||||
(i32.gt_u
|
||||
(get_local $1)
|
||||
(i32.const 268435454)
|
||||
)
|
||||
(block
|
||||
(call $~lib/env/abort
|
||||
(i32.const 0)
|
||||
(i32.const 8)
|
||||
(i32.const 23)
|
||||
(i32.const 39)
|
||||
)
|
||||
(unreachable)
|
||||
)
|
||||
(if
|
||||
(i32.gt_u
|
||||
(get_local $1)
|
||||
(i32.const 268435454)
|
||||
)
|
||||
(set_local $2
|
||||
(i32.shl
|
||||
(get_local $1)
|
||||
(i32.const 2)
|
||||
(block
|
||||
(call $~lib/env/abort
|
||||
(i32.const 0)
|
||||
(i32.const 8)
|
||||
(i32.const 23)
|
||||
(i32.const 39)
|
||||
)
|
||||
(unreachable)
|
||||
)
|
||||
(set_local $3
|
||||
(call $~lib/internal/arraybuffer/allocUnsafe
|
||||
(get_local $2)
|
||||
)
|
||||
)
|
||||
(set_local $2
|
||||
(i32.shl
|
||||
(get_local $1)
|
||||
(i32.const 2)
|
||||
)
|
||||
(i32.store
|
||||
(tee_local $0
|
||||
(if (result i32)
|
||||
(get_local $0)
|
||||
(get_local $0)
|
||||
(tee_local $0
|
||||
(block (result i32)
|
||||
(set_local $4
|
||||
(call $~lib/allocator/arena/allocate_memory
|
||||
(i32.const 8)
|
||||
)
|
||||
)
|
||||
(set_local $3
|
||||
(call $~lib/internal/arraybuffer/allocUnsafe
|
||||
(get_local $2)
|
||||
)
|
||||
)
|
||||
(i32.store
|
||||
(tee_local $0
|
||||
(if (result i32)
|
||||
(get_local $0)
|
||||
(get_local $0)
|
||||
(tee_local $0
|
||||
(block (result i32)
|
||||
(set_local $4
|
||||
(call $~lib/allocator/arena/allocate_memory
|
||||
(i32.const 8)
|
||||
)
|
||||
(i32.store
|
||||
(get_local $4)
|
||||
(i32.const 0)
|
||||
)
|
||||
(i32.store offset=4
|
||||
(get_local $4)
|
||||
(i32.const 0)
|
||||
)
|
||||
(get_local $4)
|
||||
)
|
||||
(i32.store
|
||||
(get_local $4)
|
||||
(i32.const 0)
|
||||
)
|
||||
(i32.store offset=4
|
||||
(get_local $4)
|
||||
(i32.const 0)
|
||||
)
|
||||
(get_local $4)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(get_local $3)
|
||||
)
|
||||
(i32.store offset=4
|
||||
(get_local $0)
|
||||
(get_local $1)
|
||||
)
|
||||
(call $~lib/memory/set_memory
|
||||
(i32.add
|
||||
(get_local $3)
|
||||
(i32.const 8)
|
||||
)
|
||||
(i32.store offset=4
|
||||
(get_local $0)
|
||||
(get_local $1)
|
||||
)
|
||||
(call $~lib/memory/set_memory
|
||||
(i32.add
|
||||
(get_local $3)
|
||||
(i32.const 8)
|
||||
)
|
||||
(i32.const 0)
|
||||
(get_local $2)
|
||||
)
|
||||
(i32.const 0)
|
||||
(get_local $2)
|
||||
)
|
||||
(get_local $0)
|
||||
)
|
||||
@ -6490,72 +6486,70 @@
|
||||
(local $2 i32)
|
||||
(local $3 i32)
|
||||
(local $4 i32)
|
||||
(block
|
||||
(if
|
||||
(i32.gt_u
|
||||
(get_local $1)
|
||||
(i32.const 268435454)
|
||||
)
|
||||
(block
|
||||
(call $~lib/env/abort
|
||||
(i32.const 0)
|
||||
(i32.const 8)
|
||||
(i32.const 23)
|
||||
(i32.const 39)
|
||||
)
|
||||
(unreachable)
|
||||
)
|
||||
(if
|
||||
(i32.gt_u
|
||||
(get_local $1)
|
||||
(i32.const 268435454)
|
||||
)
|
||||
(set_local $2
|
||||
(i32.shl
|
||||
(get_local $1)
|
||||
(i32.const 2)
|
||||
(block
|
||||
(call $~lib/env/abort
|
||||
(i32.const 0)
|
||||
(i32.const 8)
|
||||
(i32.const 23)
|
||||
(i32.const 39)
|
||||
)
|
||||
(unreachable)
|
||||
)
|
||||
(set_local $3
|
||||
(call $~lib/internal/arraybuffer/allocUnsafe
|
||||
(get_local $2)
|
||||
)
|
||||
)
|
||||
(set_local $2
|
||||
(i32.shl
|
||||
(get_local $1)
|
||||
(i32.const 2)
|
||||
)
|
||||
(i32.store
|
||||
(tee_local $0
|
||||
(if (result i32)
|
||||
(get_local $0)
|
||||
(get_local $0)
|
||||
(tee_local $0
|
||||
(block (result i32)
|
||||
(set_local $4
|
||||
(call $~lib/allocator/arena/allocate_memory
|
||||
(i32.const 8)
|
||||
)
|
||||
)
|
||||
(set_local $3
|
||||
(call $~lib/internal/arraybuffer/allocUnsafe
|
||||
(get_local $2)
|
||||
)
|
||||
)
|
||||
(i32.store
|
||||
(tee_local $0
|
||||
(if (result i32)
|
||||
(get_local $0)
|
||||
(get_local $0)
|
||||
(tee_local $0
|
||||
(block (result i32)
|
||||
(set_local $4
|
||||
(call $~lib/allocator/arena/allocate_memory
|
||||
(i32.const 8)
|
||||
)
|
||||
(i32.store
|
||||
(get_local $4)
|
||||
(i32.const 0)
|
||||
)
|
||||
(i32.store offset=4
|
||||
(get_local $4)
|
||||
(i32.const 0)
|
||||
)
|
||||
(get_local $4)
|
||||
)
|
||||
(i32.store
|
||||
(get_local $4)
|
||||
(i32.const 0)
|
||||
)
|
||||
(i32.store offset=4
|
||||
(get_local $4)
|
||||
(i32.const 0)
|
||||
)
|
||||
(get_local $4)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(get_local $3)
|
||||
)
|
||||
(i32.store offset=4
|
||||
(get_local $0)
|
||||
(get_local $1)
|
||||
)
|
||||
(call $~lib/memory/set_memory
|
||||
(i32.add
|
||||
(get_local $3)
|
||||
(i32.const 8)
|
||||
)
|
||||
(i32.store offset=4
|
||||
(get_local $0)
|
||||
(get_local $1)
|
||||
)
|
||||
(call $~lib/memory/set_memory
|
||||
(i32.add
|
||||
(get_local $3)
|
||||
(i32.const 8)
|
||||
)
|
||||
(i32.const 0)
|
||||
(get_local $2)
|
||||
)
|
||||
(i32.const 0)
|
||||
(get_local $2)
|
||||
)
|
||||
(get_local $0)
|
||||
)
|
||||
@ -7108,72 +7102,70 @@
|
||||
(local $2 i32)
|
||||
(local $3 i32)
|
||||
(local $4 i32)
|
||||
(block
|
||||
(if
|
||||
(i32.gt_u
|
||||
(get_local $1)
|
||||
(i32.const 268435454)
|
||||
)
|
||||
(block
|
||||
(call $~lib/env/abort
|
||||
(i32.const 0)
|
||||
(i32.const 8)
|
||||
(i32.const 23)
|
||||
(i32.const 39)
|
||||
)
|
||||
(unreachable)
|
||||
)
|
||||
(if
|
||||
(i32.gt_u
|
||||
(get_local $1)
|
||||
(i32.const 268435454)
|
||||
)
|
||||
(set_local $2
|
||||
(i32.shl
|
||||
(get_local $1)
|
||||
(i32.const 2)
|
||||
(block
|
||||
(call $~lib/env/abort
|
||||
(i32.const 0)
|
||||
(i32.const 8)
|
||||
(i32.const 23)
|
||||
(i32.const 39)
|
||||
)
|
||||
(unreachable)
|
||||
)
|
||||
(set_local $3
|
||||
(call $~lib/internal/arraybuffer/allocUnsafe
|
||||
(get_local $2)
|
||||
)
|
||||
)
|
||||
(set_local $2
|
||||
(i32.shl
|
||||
(get_local $1)
|
||||
(i32.const 2)
|
||||
)
|
||||
(i32.store
|
||||
(tee_local $0
|
||||
(if (result i32)
|
||||
(get_local $0)
|
||||
(get_local $0)
|
||||
(tee_local $0
|
||||
(block (result i32)
|
||||
(set_local $4
|
||||
(call $~lib/allocator/arena/allocate_memory
|
||||
(i32.const 8)
|
||||
)
|
||||
)
|
||||
(set_local $3
|
||||
(call $~lib/internal/arraybuffer/allocUnsafe
|
||||
(get_local $2)
|
||||
)
|
||||
)
|
||||
(i32.store
|
||||
(tee_local $0
|
||||
(if (result i32)
|
||||
(get_local $0)
|
||||
(get_local $0)
|
||||
(tee_local $0
|
||||
(block (result i32)
|
||||
(set_local $4
|
||||
(call $~lib/allocator/arena/allocate_memory
|
||||
(i32.const 8)
|
||||
)
|
||||
(i32.store
|
||||
(get_local $4)
|
||||
(i32.const 0)
|
||||
)
|
||||
(i32.store offset=4
|
||||
(get_local $4)
|
||||
(i32.const 0)
|
||||
)
|
||||
(get_local $4)
|
||||
)
|
||||
(i32.store
|
||||
(get_local $4)
|
||||
(i32.const 0)
|
||||
)
|
||||
(i32.store offset=4
|
||||
(get_local $4)
|
||||
(i32.const 0)
|
||||
)
|
||||
(get_local $4)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(get_local $3)
|
||||
)
|
||||
(i32.store offset=4
|
||||
(get_local $0)
|
||||
(get_local $1)
|
||||
)
|
||||
(call $~lib/memory/set_memory
|
||||
(i32.add
|
||||
(get_local $3)
|
||||
(i32.const 8)
|
||||
)
|
||||
(i32.store offset=4
|
||||
(get_local $0)
|
||||
(get_local $1)
|
||||
)
|
||||
(call $~lib/memory/set_memory
|
||||
(i32.add
|
||||
(get_local $3)
|
||||
(i32.const 8)
|
||||
)
|
||||
(i32.const 0)
|
||||
(get_local $2)
|
||||
)
|
||||
(i32.const 0)
|
||||
(get_local $2)
|
||||
)
|
||||
(get_local $0)
|
||||
)
|
||||
@ -7184,7 +7176,6 @@
|
||||
)
|
||||
(func $std/array/Proxy<i32>#constructor (; 108 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
|
||||
(local $2 i32)
|
||||
(nop)
|
||||
(tee_local $0
|
||||
(if (result i32)
|
||||
(get_local $0)
|
||||
@ -8530,72 +8521,70 @@
|
||||
(local $2 i32)
|
||||
(local $3 i32)
|
||||
(local $4 i32)
|
||||
(block
|
||||
(if
|
||||
(i32.gt_u
|
||||
(get_local $1)
|
||||
(i32.const 268435454)
|
||||
)
|
||||
(block
|
||||
(call $~lib/env/abort
|
||||
(i32.const 0)
|
||||
(i32.const 8)
|
||||
(i32.const 23)
|
||||
(i32.const 39)
|
||||
)
|
||||
(unreachable)
|
||||
)
|
||||
(if
|
||||
(i32.gt_u
|
||||
(get_local $1)
|
||||
(i32.const 268435454)
|
||||
)
|
||||
(set_local $2
|
||||
(i32.shl
|
||||
(get_local $1)
|
||||
(i32.const 2)
|
||||
(block
|
||||
(call $~lib/env/abort
|
||||
(i32.const 0)
|
||||
(i32.const 8)
|
||||
(i32.const 23)
|
||||
(i32.const 39)
|
||||
)
|
||||
(unreachable)
|
||||
)
|
||||
(set_local $3
|
||||
(call $~lib/internal/arraybuffer/allocUnsafe
|
||||
(get_local $2)
|
||||
)
|
||||
)
|
||||
(set_local $2
|
||||
(i32.shl
|
||||
(get_local $1)
|
||||
(i32.const 2)
|
||||
)
|
||||
(i32.store
|
||||
(tee_local $0
|
||||
(if (result i32)
|
||||
(get_local $0)
|
||||
(get_local $0)
|
||||
(tee_local $0
|
||||
(block (result i32)
|
||||
(set_local $4
|
||||
(call $~lib/allocator/arena/allocate_memory
|
||||
(i32.const 8)
|
||||
)
|
||||
)
|
||||
(set_local $3
|
||||
(call $~lib/internal/arraybuffer/allocUnsafe
|
||||
(get_local $2)
|
||||
)
|
||||
)
|
||||
(i32.store
|
||||
(tee_local $0
|
||||
(if (result i32)
|
||||
(get_local $0)
|
||||
(get_local $0)
|
||||
(tee_local $0
|
||||
(block (result i32)
|
||||
(set_local $4
|
||||
(call $~lib/allocator/arena/allocate_memory
|
||||
(i32.const 8)
|
||||
)
|
||||
(i32.store
|
||||
(get_local $4)
|
||||
(i32.const 0)
|
||||
)
|
||||
(i32.store offset=4
|
||||
(get_local $4)
|
||||
(i32.const 0)
|
||||
)
|
||||
(get_local $4)
|
||||
)
|
||||
(i32.store
|
||||
(get_local $4)
|
||||
(i32.const 0)
|
||||
)
|
||||
(i32.store offset=4
|
||||
(get_local $4)
|
||||
(i32.const 0)
|
||||
)
|
||||
(get_local $4)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(get_local $3)
|
||||
)
|
||||
(i32.store offset=4
|
||||
(get_local $0)
|
||||
(get_local $1)
|
||||
)
|
||||
(call $~lib/memory/set_memory
|
||||
(i32.add
|
||||
(get_local $3)
|
||||
(i32.const 8)
|
||||
)
|
||||
(i32.store offset=4
|
||||
(get_local $0)
|
||||
(get_local $1)
|
||||
)
|
||||
(call $~lib/memory/set_memory
|
||||
(i32.add
|
||||
(get_local $3)
|
||||
(i32.const 8)
|
||||
)
|
||||
(i32.const 0)
|
||||
(get_local $2)
|
||||
)
|
||||
(i32.const 0)
|
||||
(get_local $2)
|
||||
)
|
||||
(get_local $0)
|
||||
)
|
||||
|
@ -132,7 +132,6 @@
|
||||
)
|
||||
(func $std/constructor/EmptyCtor#constructor (; 1 ;) (type $ii) (param $0 i32) (result i32)
|
||||
(local $1 i32)
|
||||
(nop)
|
||||
(tee_local $0
|
||||
(if (result i32)
|
||||
(get_local $0)
|
||||
@ -152,7 +151,6 @@
|
||||
)
|
||||
(func $std/constructor/EmptyCtorWithFieldInit#constructor (; 2 ;) (type $ii) (param $0 i32) (result i32)
|
||||
(local $1 i32)
|
||||
(nop)
|
||||
(tee_local $0
|
||||
(if (result i32)
|
||||
(get_local $0)
|
||||
@ -176,7 +174,6 @@
|
||||
)
|
||||
(func $std/constructor/EmptyCtorWithFieldNoInit#constructor (; 3 ;) (type $ii) (param $0 i32) (result i32)
|
||||
(local $1 i32)
|
||||
(nop)
|
||||
(tee_local $0
|
||||
(if (result i32)
|
||||
(get_local $0)
|
||||
|
@ -401,13 +401,11 @@
|
||||
(set_local $3
|
||||
(i32.const 1)
|
||||
)
|
||||
(block
|
||||
(set_local $4
|
||||
(f64.const 0)
|
||||
)
|
||||
(set_local $5
|
||||
(f64.const 0)
|
||||
)
|
||||
(set_local $4
|
||||
(f64.const 0)
|
||||
)
|
||||
(set_local $5
|
||||
(f64.const 0)
|
||||
)
|
||||
(if
|
||||
(if (result i32)
|
||||
@ -2782,16 +2780,14 @@
|
||||
)
|
||||
)
|
||||
)
|
||||
(block
|
||||
(set_local $3
|
||||
(i32.const 0)
|
||||
)
|
||||
(set_local $4
|
||||
(i32.wrap/i64
|
||||
(i64.shr_u
|
||||
(get_local $1)
|
||||
(i64.const 63)
|
||||
)
|
||||
(set_local $3
|
||||
(i32.const 0)
|
||||
)
|
||||
(set_local $4
|
||||
(i32.wrap/i64
|
||||
(i64.shr_u
|
||||
(get_local $1)
|
||||
(i64.const 63)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
@ -1373,13 +1373,11 @@
|
||||
(set_local $3
|
||||
(i32.const 1)
|
||||
)
|
||||
(block
|
||||
(set_local $4
|
||||
(f64.const 0)
|
||||
)
|
||||
(set_local $5
|
||||
(f64.const 0)
|
||||
)
|
||||
(set_local $4
|
||||
(f64.const 0)
|
||||
)
|
||||
(set_local $5
|
||||
(f64.const 0)
|
||||
)
|
||||
(if
|
||||
(if (result i32)
|
||||
@ -2141,13 +2139,11 @@
|
||||
(get_local $0)
|
||||
)
|
||||
)
|
||||
(block
|
||||
(set_local $2
|
||||
(f32.const 0)
|
||||
)
|
||||
(set_local $3
|
||||
(f32.const 0)
|
||||
)
|
||||
(set_local $2
|
||||
(f32.const 0)
|
||||
)
|
||||
(set_local $3
|
||||
(f32.const 0)
|
||||
)
|
||||
(set_local $4
|
||||
(i32.const 1)
|
||||
@ -6010,16 +6006,14 @@
|
||||
)
|
||||
)
|
||||
)
|
||||
(block
|
||||
(set_local $3
|
||||
(i32.const 0)
|
||||
)
|
||||
(set_local $4
|
||||
(i32.wrap/i64
|
||||
(i64.shr_u
|
||||
(get_local $1)
|
||||
(i64.const 63)
|
||||
)
|
||||
(set_local $3
|
||||
(i32.const 0)
|
||||
)
|
||||
(set_local $4
|
||||
(i32.wrap/i64
|
||||
(i64.shr_u
|
||||
(get_local $1)
|
||||
(i64.const 63)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
@ -123,43 +123,41 @@
|
||||
)
|
||||
(func $std/new/AClass#constructor (; 1 ;) (type $ifi) (param $0 i32) (param $1 f32) (result i32)
|
||||
(local $2 i32)
|
||||
(block
|
||||
(i32.store
|
||||
(get_local $0)
|
||||
(i32.add
|
||||
(i32.load
|
||||
(tee_local $0
|
||||
(if (result i32)
|
||||
(get_local $0)
|
||||
(get_local $0)
|
||||
(tee_local $0
|
||||
(block (result i32)
|
||||
(set_local $2
|
||||
(call $~lib/allocator/arena/allocate_memory
|
||||
(i32.const 8)
|
||||
)
|
||||
(i32.store
|
||||
(get_local $0)
|
||||
(i32.add
|
||||
(i32.load
|
||||
(tee_local $0
|
||||
(if (result i32)
|
||||
(get_local $0)
|
||||
(get_local $0)
|
||||
(tee_local $0
|
||||
(block (result i32)
|
||||
(set_local $2
|
||||
(call $~lib/allocator/arena/allocate_memory
|
||||
(i32.const 8)
|
||||
)
|
||||
(i32.store
|
||||
(get_local $2)
|
||||
(i32.const 1)
|
||||
)
|
||||
(f32.store offset=4
|
||||
(get_local $2)
|
||||
(f32.const 2)
|
||||
)
|
||||
(get_local $2)
|
||||
)
|
||||
(i32.store
|
||||
(get_local $2)
|
||||
(i32.const 1)
|
||||
)
|
||||
(f32.store offset=4
|
||||
(get_local $2)
|
||||
(f32.const 2)
|
||||
)
|
||||
(get_local $2)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(i32.const 1)
|
||||
)
|
||||
(i32.const 1)
|
||||
)
|
||||
(f32.store offset=4
|
||||
(get_local $0)
|
||||
(get_local $1)
|
||||
)
|
||||
)
|
||||
(f32.store offset=4
|
||||
(get_local $0)
|
||||
(get_local $1)
|
||||
)
|
||||
(get_local $0)
|
||||
)
|
||||
|
@ -194,7 +194,6 @@
|
||||
)
|
||||
(func $std/operator-overloading/Tester#constructor (; 2 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
|
||||
(local $3 i32)
|
||||
(nop)
|
||||
(tee_local $0
|
||||
(if (result i32)
|
||||
(get_local $0)
|
||||
@ -2399,7 +2398,6 @@
|
||||
)
|
||||
(func $std/operator-overloading/TesterInlineStatic#constructor (; 29 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
|
||||
(local $3 i32)
|
||||
(nop)
|
||||
(tee_local $0
|
||||
(if (result i32)
|
||||
(get_local $0)
|
||||
@ -2427,7 +2425,6 @@
|
||||
)
|
||||
(func $std/operator-overloading/TesterInlineInstance#constructor (; 30 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
|
||||
(local $3 i32)
|
||||
(nop)
|
||||
(tee_local $0
|
||||
(if (result i32)
|
||||
(get_local $0)
|
||||
|
@ -458,57 +458,55 @@
|
||||
(unreachable)
|
||||
)
|
||||
)
|
||||
(block
|
||||
(set_local $2
|
||||
(i64.and
|
||||
(i64.shr_u
|
||||
(get_local $0)
|
||||
(i64.const 8)
|
||||
)
|
||||
(i64.const 71777214294589695)
|
||||
)
|
||||
)
|
||||
(set_local $3
|
||||
(i64.shl
|
||||
(i64.and
|
||||
(get_local $0)
|
||||
(i64.const 71777214294589695)
|
||||
)
|
||||
(set_local $2
|
||||
(i64.and
|
||||
(i64.shr_u
|
||||
(get_local $0)
|
||||
(i64.const 8)
|
||||
)
|
||||
(i64.const 71777214294589695)
|
||||
)
|
||||
(set_local $4
|
||||
)
|
||||
(set_local $3
|
||||
(i64.shl
|
||||
(i64.and
|
||||
(get_local $0)
|
||||
(i64.const 71777214294589695)
|
||||
)
|
||||
(i64.const 8)
|
||||
)
|
||||
)
|
||||
(set_local $4
|
||||
(i64.or
|
||||
(get_local $2)
|
||||
(get_local $3)
|
||||
)
|
||||
)
|
||||
(set_local $2
|
||||
(i64.and
|
||||
(i64.shr_u
|
||||
(get_local $4)
|
||||
(i64.const 16)
|
||||
)
|
||||
(i64.const 281470681808895)
|
||||
)
|
||||
)
|
||||
(set_local $3
|
||||
(i64.shl
|
||||
(i64.and
|
||||
(get_local $4)
|
||||
(i64.const 281470681808895)
|
||||
)
|
||||
(i64.const 16)
|
||||
)
|
||||
)
|
||||
(return
|
||||
(i64.rotr
|
||||
(i64.or
|
||||
(get_local $2)
|
||||
(get_local $3)
|
||||
)
|
||||
)
|
||||
(set_local $2
|
||||
(i64.and
|
||||
(i64.shr_u
|
||||
(get_local $4)
|
||||
(i64.const 16)
|
||||
)
|
||||
(i64.const 281470681808895)
|
||||
)
|
||||
)
|
||||
(set_local $3
|
||||
(i64.shl
|
||||
(i64.and
|
||||
(get_local $4)
|
||||
(i64.const 281470681808895)
|
||||
)
|
||||
(i64.const 16)
|
||||
)
|
||||
)
|
||||
(return
|
||||
(i64.rotr
|
||||
(i64.or
|
||||
(get_local $2)
|
||||
(get_local $3)
|
||||
)
|
||||
(i64.const 32)
|
||||
)
|
||||
(i64.const 32)
|
||||
)
|
||||
)
|
||||
)
|
||||
@ -561,57 +559,55 @@
|
||||
(unreachable)
|
||||
)
|
||||
)
|
||||
(block
|
||||
(set_local $2
|
||||
(i64.and
|
||||
(i64.shr_u
|
||||
(get_local $0)
|
||||
(i64.const 8)
|
||||
)
|
||||
(i64.const 71777214294589695)
|
||||
)
|
||||
)
|
||||
(set_local $3
|
||||
(i64.shl
|
||||
(i64.and
|
||||
(get_local $0)
|
||||
(i64.const 71777214294589695)
|
||||
)
|
||||
(set_local $2
|
||||
(i64.and
|
||||
(i64.shr_u
|
||||
(get_local $0)
|
||||
(i64.const 8)
|
||||
)
|
||||
(i64.const 71777214294589695)
|
||||
)
|
||||
(set_local $4
|
||||
)
|
||||
(set_local $3
|
||||
(i64.shl
|
||||
(i64.and
|
||||
(get_local $0)
|
||||
(i64.const 71777214294589695)
|
||||
)
|
||||
(i64.const 8)
|
||||
)
|
||||
)
|
||||
(set_local $4
|
||||
(i64.or
|
||||
(get_local $2)
|
||||
(get_local $3)
|
||||
)
|
||||
)
|
||||
(set_local $2
|
||||
(i64.and
|
||||
(i64.shr_u
|
||||
(get_local $4)
|
||||
(i64.const 16)
|
||||
)
|
||||
(i64.const 281470681808895)
|
||||
)
|
||||
)
|
||||
(set_local $3
|
||||
(i64.shl
|
||||
(i64.and
|
||||
(get_local $4)
|
||||
(i64.const 281470681808895)
|
||||
)
|
||||
(i64.const 16)
|
||||
)
|
||||
)
|
||||
(return
|
||||
(i64.rotr
|
||||
(i64.or
|
||||
(get_local $2)
|
||||
(get_local $3)
|
||||
)
|
||||
)
|
||||
(set_local $2
|
||||
(i64.and
|
||||
(i64.shr_u
|
||||
(get_local $4)
|
||||
(i64.const 16)
|
||||
)
|
||||
(i64.const 281470681808895)
|
||||
)
|
||||
)
|
||||
(set_local $3
|
||||
(i64.shl
|
||||
(i64.and
|
||||
(get_local $4)
|
||||
(i64.const 281470681808895)
|
||||
)
|
||||
(i64.const 16)
|
||||
)
|
||||
)
|
||||
(return
|
||||
(i64.rotr
|
||||
(i64.or
|
||||
(get_local $2)
|
||||
(get_local $3)
|
||||
)
|
||||
(i64.const 32)
|
||||
)
|
||||
(i64.const 32)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
File diff suppressed because it is too large
Load Diff
Loading…
x
Reference in New Issue
Block a user