Rename memory instructions; Rework constant handling

This commit is contained in:
dcodeIO
2018-07-18 23:49:32 +02:00
parent 34e8facfdc
commit a1b75b69b7
170 changed files with 26392 additions and 5185 deletions

View File

@ -7,10 +7,10 @@
(global $abi/y (mut i32) (i32.const 0))
(memory $0 1)
(data (i32.const 8) "\06\00\00\00a\00b\00i\00.\00t\00s")
(export "memory" (memory $0))
(export "exported" (func $abi/exported))
(export "exportedExported" (func $abi/exportedExported))
(export "exportedInternal" (func $abi/exportedInternal))
(export "memory" (memory $0))
(start $start)
(func $abi/exported (; 1 ;) (type $i) (result i32)
(i32.const -128)

View File

@ -8,10 +8,10 @@
(global $HEAP_BASE i32 (i32.const 24))
(memory $0 1)
(data (i32.const 8) "\06\00\00\00a\00b\00i\00.\00t\00s\00")
(export "memory" (memory $0))
(export "exported" (func $abi/exported))
(export "exportedExported" (func $abi/exportedExported))
(export "exportedInternal" (func $abi/exportedInternal))
(export "memory" (memory $0))
(start $start)
(func $abi/exported (; 1 ;) (type $i) (result i32)
(i32.shr_s

View File

@ -1,5 +1,13 @@
(module
(type $v (func))
(global $ASC_TARGET i32 (i32.const 0))
(global $ASC_NO_TREESHAKING i32 (i32.const 0))
(global $ASC_NO_ASSERT i32 (i32.const 0))
(global $ASC_MEMORY_BASE i32 (i32.const 0))
(global $ASC_OPTIMIZE_LEVEL i32 (i32.const 0))
(global $ASC_SHRINK_LEVEL i32 (i32.const 0))
(global $ASC_FEATURE_MUTABLE_GLOBAL i32 (i32.const 0))
(global $ASC_FEATURE_SIGN_EXTENSION i32 (i32.const 0))
(global $HEAP_BASE i32 (i32.const 8))
(memory $0 0)
(export "memory" (memory $0))

View File

@ -2,6 +2,8 @@
(type $iiiiv (func (param i32 i32 i32 i32)))
(type $fi (func (param f32) (result i32)))
(type $Fi (func (param f64) (result i32)))
(type $i (func (result i32)))
(type $ii (func (param i32) (result i32)))
(type $iiv (func (param i32 i32)))
(type $v (func))
(import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32)))
@ -19,9 +21,9 @@
(memory $0 1)
(data (i32.const 8) "\0b\00\00\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s")
(data (i32.const 36) "\01\00\00\001")
(export "test" (func $builtins/test))
(export "memory" (memory $0))
(export "table" (table $0))
(export "test" (func $builtins/test))
(start $start)
(func $isNaN<f32> (; 1 ;) (type $fi) (param $0 f32) (result i32)
(f32.ne
@ -53,13 +55,21 @@
(f64.const 0)
)
)
(func $start~anonymous|0 (; 5 ;) (type $iiv) (param $0 i32) (param $1 i32)
(func $~lib/memory/memory.size (; 5 ;) (type $i) (result i32)
(current_memory)
)
(func $~lib/memory/memory.grow (; 6 ;) (type $ii) (param $0 i32) (result i32)
(grow_memory
(get_local $0)
)
)
(func $start~anonymous|0 (; 7 ;) (type $iiv) (param $0 i32) (param $1 i32)
(nop)
)
(func $builtins/test (; 6 ;) (type $v)
(func $builtins/test (; 8 ;) (type $v)
(nop)
)
(func $start (; 7 ;) (type $v)
(func $start (; 9 ;) (type $v)
(set_global $builtins/i
(i32.const 31)
)
@ -729,18 +739,18 @@
(f64.const 1.24e-322)
)
(drop
(current_memory)
(call $~lib/memory/memory.size)
)
(drop
(grow_memory
(call $~lib/memory/memory.grow
(i32.const 1)
)
)
(set_global $builtins/s
(current_memory)
(call $~lib/memory/memory.size)
)
(set_global $builtins/s
(grow_memory
(call $~lib/memory/memory.grow
(i32.const 1)
)
)

View File

@ -219,11 +219,11 @@ F = reinterpret<f64>(25);
var s: usize;
current_memory();
grow_memory(1); // also necessary for load/store tests below
memory.size();
memory.grow(1); // also necessary for load/store tests below
s = current_memory();
s = grow_memory(1);
s = memory.size();
s = memory.grow(1);
// other

View File

@ -2,6 +2,8 @@
(type $iiiiv (func (param i32 i32 i32 i32)))
(type $fi (func (param f32) (result i32)))
(type $Fi (func (param f64) (result i32)))
(type $i (func (result i32)))
(type $ii (func (param i32) (result i32)))
(type $iiv (func (param i32 i32)))
(type $v (func))
(import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32)))
@ -17,15 +19,43 @@
(global $builtins/U (mut i64) (i64.const 0))
(global $builtins/s (mut i32) (i32.const 0))
(global $builtins/fn (mut i32) (i32.const 0))
(global $i8.MIN_VALUE i32 (i32.const -128))
(global $i8.MAX_VALUE i32 (i32.const 127))
(global $i16.MIN_VALUE i32 (i32.const -32768))
(global $i16.MAX_VALUE i32 (i32.const 32767))
(global $i32.MIN_VALUE i32 (i32.const -2147483648))
(global $i32.MAX_VALUE i32 (i32.const 2147483647))
(global $i64.MIN_VALUE i64 (i64.const -9223372036854775808))
(global $i64.MAX_VALUE i64 (i64.const 9223372036854775807))
(global $u8.MIN_VALUE i32 (i32.const 0))
(global $u8.MAX_VALUE i32 (i32.const 255))
(global $u16.MIN_VALUE i32 (i32.const 0))
(global $u16.MAX_VALUE i32 (i32.const 65535))
(global $u32.MIN_VALUE i32 (i32.const 0))
(global $u32.MAX_VALUE i32 (i32.const -1))
(global $u64.MIN_VALUE i64 (i64.const 0))
(global $u64.MAX_VALUE i64 (i64.const -1))
(global $bool.MIN_VALUE i32 (i32.const 0))
(global $bool.MAX_VALUE i32 (i32.const 1))
(global $f32.MIN_VALUE f32 (f32.const -3402823466385288598117041e14))
(global $f32.MAX_VALUE f32 (f32.const 3402823466385288598117041e14))
(global $f32.MIN_SAFE_INTEGER f32 (f32.const -16777215))
(global $f32.MAX_SAFE_INTEGER f32 (f32.const 16777215))
(global $f32.EPSILON f32 (f32.const 1.1920928955078125e-07))
(global $f64.MIN_VALUE f64 (f64.const -1797693134862315708145274e284))
(global $f64.MAX_VALUE f64 (f64.const 1797693134862315708145274e284))
(global $f64.MIN_SAFE_INTEGER f64 (f64.const -9007199254740991))
(global $f64.MAX_SAFE_INTEGER f64 (f64.const 9007199254740991))
(global $f64.EPSILON f64 (f64.const 2.220446049250313e-16))
(global $HEAP_BASE i32 (i32.const 44))
(table 1 1 anyfunc)
(elem (i32.const 0) $start~anonymous|0)
(memory $0 1)
(data (i32.const 8) "\0b\00\00\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00")
(data (i32.const 36) "\01\00\00\001\00")
(export "test" (func $builtins/test))
(export "memory" (memory $0))
(export "table" (table $0))
(export "test" (func $builtins/test))
(start $start)
(func $isNaN<f32> (; 1 ;) (type $fi) (param $0 f32) (result i32)
(f32.ne
@ -57,13 +87,21 @@
(f64.const 0)
)
)
(func $start~anonymous|0 (; 5 ;) (type $iiv) (param $0 i32) (param $1 i32)
(func $~lib/memory/memory.size (; 5 ;) (type $i) (result i32)
(current_memory)
)
(func $~lib/memory/memory.grow (; 6 ;) (type $ii) (param $0 i32) (result i32)
(grow_memory
(get_local $0)
)
)
(func $start~anonymous|0 (; 7 ;) (type $iiv) (param $0 i32) (param $1 i32)
(nop)
)
(func $builtins/test (; 6 ;) (type $v)
(func $builtins/test (; 8 ;) (type $v)
(nop)
)
(func $start (; 7 ;) (type $v)
(func $start (; 9 ;) (type $v)
(local $0 i32)
(local $1 i32)
(local $2 i64)
@ -1521,18 +1559,18 @@
)
)
(drop
(current_memory)
(call $~lib/memory/memory.size)
)
(drop
(grow_memory
(call $~lib/memory/memory.grow
(i32.const 1)
)
)
(set_global $builtins/s
(current_memory)
(call $~lib/memory/memory.size)
)
(set_global $builtins/s
(grow_memory
(call $~lib/memory/memory.grow
(i32.const 1)
)
)
@ -2054,7 +2092,7 @@
(if
(i32.eqz
(i32.eq
(i32.const -128)
(get_global $i8.MIN_VALUE)
(i32.shr_s
(i32.shl
(i32.const 128)
@ -2077,7 +2115,7 @@
(if
(i32.eqz
(i32.eq
(i32.const 127)
(get_global $i8.MAX_VALUE)
(i32.const 127)
)
)
@ -2094,7 +2132,7 @@
(if
(i32.eqz
(i32.eq
(i32.const -32768)
(get_global $i16.MIN_VALUE)
(i32.shr_s
(i32.shl
(i32.const 32768)
@ -2117,7 +2155,7 @@
(if
(i32.eqz
(i32.eq
(i32.const 32767)
(get_global $i16.MAX_VALUE)
(i32.const 32767)
)
)
@ -2134,7 +2172,7 @@
(if
(i32.eqz
(i32.eq
(i32.const -2147483648)
(get_global $i32.MIN_VALUE)
(i32.const -2147483648)
)
)
@ -2151,7 +2189,7 @@
(if
(i32.eqz
(i32.eq
(i32.const 2147483647)
(get_global $i32.MAX_VALUE)
(i32.const 2147483647)
)
)
@ -2168,7 +2206,7 @@
(if
(i32.eqz
(i64.eq
(i64.const -9223372036854775808)
(get_global $i64.MIN_VALUE)
(i64.const -9223372036854775808)
)
)
@ -2185,7 +2223,7 @@
(if
(i32.eqz
(i64.eq
(i64.const 9223372036854775807)
(get_global $i64.MAX_VALUE)
(i64.const 9223372036854775807)
)
)
@ -2202,7 +2240,7 @@
(if
(i32.eqz
(i32.eq
(i32.const 0)
(get_global $u8.MIN_VALUE)
(i32.const 0)
)
)
@ -2219,7 +2257,7 @@
(if
(i32.eqz
(i32.eq
(i32.const 255)
(get_global $u8.MAX_VALUE)
(i32.const 255)
)
)
@ -2236,7 +2274,7 @@
(if
(i32.eqz
(i32.eq
(i32.const 0)
(get_global $u16.MIN_VALUE)
(i32.const 0)
)
)
@ -2253,7 +2291,7 @@
(if
(i32.eqz
(i32.eq
(i32.const 65535)
(get_global $u16.MAX_VALUE)
(i32.const 65535)
)
)
@ -2270,7 +2308,7 @@
(if
(i32.eqz
(i32.eq
(i32.const 0)
(get_global $u32.MIN_VALUE)
(i32.const 0)
)
)
@ -2287,7 +2325,7 @@
(if
(i32.eqz
(i32.eq
(i32.const -1)
(get_global $u32.MAX_VALUE)
(i32.const -1)
)
)
@ -2304,7 +2342,7 @@
(if
(i32.eqz
(i64.eq
(i64.const 0)
(get_global $u64.MIN_VALUE)
(i64.const 0)
)
)
@ -2321,7 +2359,7 @@
(if
(i32.eqz
(i64.eq
(i64.const -1)
(get_global $u64.MAX_VALUE)
(i64.const -1)
)
)
@ -2338,7 +2376,7 @@
(if
(i32.eqz
(i32.eq
(i32.const 0)
(get_global $bool.MIN_VALUE)
(i32.const 0)
)
)
@ -2355,7 +2393,7 @@
(if
(i32.eqz
(i32.eq
(i32.const 0)
(get_global $bool.MIN_VALUE)
(i32.const 0)
)
)
@ -2372,7 +2410,7 @@
(if
(i32.eqz
(i32.eq
(i32.const 1)
(get_global $bool.MAX_VALUE)
(i32.const 1)
)
)
@ -2389,7 +2427,7 @@
(if
(i32.eqz
(i32.eq
(i32.const 1)
(get_global $bool.MAX_VALUE)
(i32.const 1)
)
)
@ -2406,7 +2444,7 @@
(if
(i32.eqz
(f32.eq
(f32.const -3402823466385288598117041e14)
(get_global $f32.MIN_VALUE)
(f32.const -3402823466385288598117041e14)
)
)
@ -2423,7 +2461,7 @@
(if
(i32.eqz
(f32.eq
(f32.const 3402823466385288598117041e14)
(get_global $f32.MAX_VALUE)
(f32.const 3402823466385288598117041e14)
)
)
@ -2440,7 +2478,7 @@
(if
(i32.eqz
(f32.eq
(f32.const -16777215)
(get_global $f32.MIN_SAFE_INTEGER)
(f32.const -16777215)
)
)
@ -2457,7 +2495,7 @@
(if
(i32.eqz
(f32.eq
(f32.const 16777215)
(get_global $f32.MAX_SAFE_INTEGER)
(f32.const 16777215)
)
)
@ -2474,7 +2512,7 @@
(if
(i32.eqz
(f32.eq
(f32.const 1.1920928955078125e-07)
(get_global $f32.EPSILON)
(f32.const 1.1920928955078125e-07)
)
)
@ -2491,7 +2529,7 @@
(if
(i32.eqz
(f64.eq
(f64.const -1797693134862315708145274e284)
(get_global $f64.MIN_VALUE)
(f64.const -1797693134862315708145274e284)
)
)
@ -2508,7 +2546,7 @@
(if
(i32.eqz
(f64.eq
(f64.const 1797693134862315708145274e284)
(get_global $f64.MAX_VALUE)
(f64.const 1797693134862315708145274e284)
)
)
@ -2525,7 +2563,7 @@
(if
(i32.eqz
(f64.eq
(f64.const -9007199254740991)
(get_global $f64.MIN_SAFE_INTEGER)
(f64.const -9007199254740991)
)
)
@ -2542,7 +2580,7 @@
(if
(i32.eqz
(f64.eq
(f64.const 9007199254740991)
(get_global $f64.MAX_SAFE_INTEGER)
(f64.const 9007199254740991)
)
)
@ -2559,7 +2597,7 @@
(if
(i32.eqz
(f64.eq
(f64.const 2.220446049250313e-16)
(get_global $f64.EPSILON)
(f64.const 2.220446049250313e-16)
)
)

View File

@ -25,8 +25,8 @@
(block $2of2
(block $1of2
(block $0of2
(block $oob
(br_table $0of2 $1of2 $2of2 $oob
(block $outOfRange
(br_table $0of2 $1of2 $2of2 $outOfRange
(i32.sub
(get_global $~argc)
(i32.const 1)

View File

@ -26,8 +26,8 @@
(block $2of2
(block $1of2
(block $0of2
(block $oob
(br_table $0of2 $1of2 $2of2 $oob
(block $outOfRange
(br_table $0of2 $1of2 $2of2 $outOfRange
(i32.sub
(get_global $~argc)
(i32.const 1)

View File

@ -1,8 +1,8 @@
(module
(type $iv (func (param i32)))
(memory $0 0)
(export "test" (func $class-extends/test))
(export "memory" (memory $0))
(export "test" (func $class-extends/test))
(func $class-extends/test (; 0 ;) (type $iv) (param $0 i32)
(drop
(i32.load

View File

@ -2,8 +2,8 @@
(type $iv (func (param i32)))
(global $HEAP_BASE i32 (i32.const 8))
(memory $0 0)
(export "test" (func $class-extends/test))
(export "memory" (memory $0))
(export "test" (func $class-extends/test))
(func $class-extends/test (; 0 ;) (type $iv) (param $0 i32)
(drop
(i32.load

View File

@ -2,8 +2,8 @@
(type $iv (func (param i32)))
(type $v (func))
(memory $0 0)
(export "test" (func $class-overloading/test))
(export "memory" (memory $0))
(export "test" (func $class-overloading/test))
(start $start)
(func $class-overloading/Foo#baz (; 0 ;) (type $iv) (param $0 i32)
(nop)

View File

@ -3,8 +3,8 @@
(type $v (func))
(global $HEAP_BASE i32 (i32.const 8))
(memory $0 0)
(export "test" (func $class-overloading/test))
(export "memory" (memory $0))
(export "test" (func $class-overloading/test))
(start $start)
(func $class-overloading/Foo#baz (; 0 ;) (type $iv) (param $0 i32)
(nop)

View File

@ -1,8 +1,8 @@
(module
(type $i (func (result i32)))
(memory $0 0)
(export "test" (func $class-with-boolean-field/test))
(export "memory" (memory $0))
(export "test" (func $class-with-boolean-field/test))
(func $class-with-boolean-field/test (; 0 ;) (type $i) (result i32)
(i32.store8
(i32.const 0)

View File

@ -2,8 +2,8 @@
(type $i (func (result i32)))
(global $HEAP_BASE i32 (i32.const 8))
(memory $0 0)
(export "test" (func $class-with-boolean-field/test))
(export "memory" (memory $0))
(export "test" (func $class-with-boolean-field/test))
(func $class-with-boolean-field/test (; 0 ;) (type $i) (result i32)
(local $0 i32)
(i32.store8

View File

@ -8,8 +8,8 @@
(global $class/Animal.ONE (mut i32) (i32.const 1))
(memory $0 1)
(data (i32.const 8) "\08\00\00\00c\00l\00a\00s\00s\00.\00t\00s")
(export "test" (func $class/test))
(export "memory" (memory $0))
(export "test" (func $class/test))
(start $start)
(func $class/Animal.add (; 0 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(i32.add

View File

@ -11,8 +11,8 @@
(global $HEAP_BASE i32 (i32.const 28))
(memory $0 1)
(data (i32.const 8) "\08\00\00\00c\00l\00a\00s\00s\00.\00t\00s\00")
(export "test" (func $class/test))
(export "memory" (memory $0))
(export "test" (func $class/test))
(start $start)
(func $class/Animal.add (; 1 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(i32.add

View File

@ -18,6 +18,7 @@
(global $enum/SelfReference.ZERO i32 (i32.const 0))
(global $enum/SelfReference.ONE i32 (i32.const 1))
(memory $0 0)
(export "memory" (memory $0))
(export "Implicit.ZERO" (global $enum/Implicit.ZERO))
(export "Implicit.ONE" (global $enum/Implicit.ONE))
(export "Implicit.TWO" (global $enum/Implicit.TWO))
@ -32,7 +33,6 @@
(export "Mixed.FOUR" (global $enum/Mixed.FOUR))
(export "SelfReference.ZERO" (global $enum/SelfReference.ZERO))
(export "SelfReference.ONE" (global $enum/SelfReference.ONE))
(export "memory" (memory $0))
(start $start)
(func $enum/getZero (; 0 ;) (type $i) (result i32)
(i32.const 0)
@ -43,7 +43,7 @@
)
(set_global $enum/NonConstant.ONE
(i32.add
(get_global $enum/NonConstant.ZERO)
(call $enum/getZero)
(i32.const 1)
)
)

View File

@ -1,18 +1,18 @@
export enum Implicit {
export const enum Implicit {
ZERO,
ONE,
TWO,
THREE
}
export enum Explicit {
export const enum Explicit {
ZERO = 0,
ONE = 0 + 1,
TWO = 1 + 1,
THREE = 3
}
export enum Mixed {
export const enum Mixed {
ZERO,
ONE,
THREE = 3,
@ -23,12 +23,15 @@ function getZero(): i32 {
return 0;
}
export enum NonConstant {
ZERO = getZero(), // cannot export a mutable global
ONE // cannot export a mutable global (tsc doesn't allow this)
enum NonConstant {
ZERO = getZero(),
ONE = getZero() + 1
}
export enum SelfReference {
NonConstant.ZERO;
NonConstant.ONE;
export const enum SelfReference {
ZERO,
ONE = ZERO + 1
}

View File

@ -20,6 +20,7 @@
(global $enum/enumType (mut i32) (i32.const 0))
(global $HEAP_BASE i32 (i32.const 8))
(memory $0 0)
(export "memory" (memory $0))
(export "Implicit.ZERO" (global $enum/Implicit.ZERO))
(export "Implicit.ONE" (global $enum/Implicit.ONE))
(export "Implicit.TWO" (global $enum/Implicit.TWO))
@ -34,7 +35,6 @@
(export "Mixed.FOUR" (global $enum/Mixed.FOUR))
(export "SelfReference.ZERO" (global $enum/SelfReference.ZERO))
(export "SelfReference.ONE" (global $enum/SelfReference.ONE))
(export "memory" (memory $0))
(start $start)
(func $enum/getZero (; 0 ;) (type $i) (result i32)
(i32.const 0)
@ -45,9 +45,15 @@
)
(set_global $enum/NonConstant.ONE
(i32.add
(get_global $enum/NonConstant.ZERO)
(call $enum/getZero)
(i32.const 1)
)
)
(drop
(get_global $enum/NonConstant.ZERO)
)
(drop
(get_global $enum/NonConstant.ONE)
)
)
)

View File

@ -5,6 +5,7 @@
(global $export/b i32 (i32.const 2))
(global $export/c i32 (i32.const 3))
(memory $0 0)
(export "memory" (memory $0))
(export "add" (func $export/add))
(export "sub" (func $export/sub))
(export "renamed_mul" (func $export/mul))
@ -12,7 +13,6 @@
(export "b" (global $export/b))
(export "renamed_c" (global $export/c))
(export "ns.two" (func $export/ns.two))
(export "memory" (memory $0))
(func $export/add (; 0 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(i32.add
(get_local $0)

View File

@ -6,6 +6,7 @@
(global $export/c i32 (i32.const 3))
(global $HEAP_BASE i32 (i32.const 8))
(memory $0 0)
(export "memory" (memory $0))
(export "add" (func $export/add))
(export "sub" (func $export/sub))
(export "renamed_mul" (func $export/mul))
@ -13,7 +14,6 @@
(export "b" (global $export/b))
(export "renamed_c" (global $export/c))
(export "ns.two" (func $export/ns.two))
(export "memory" (memory $0))
(func $export/add (; 0 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(i32.add
(get_local $0)

View File

@ -1,13 +1,12 @@
(module
(type $iii (func (param i32 i32) (result i32)))
(type $iv (func (param i32)))
(type $i (func (result i32)))
(type $ii (func (param i32) (result i32)))
(type $iiv (func (param i32 i32)))
(type $iv (func (param i32)))
(type $v (func))
(global $~lib/allocator/arena/startOffset (mut i32) (i32.const 0))
(global $~lib/allocator/arena/offset (mut i32) (i32.const 0))
(global $~argc (mut i32) (i32.const 0))
(global $exports/Animal.CAT i32 (i32.const 0))
(global $exports/Animal.DOG i32 (i32.const 1))
(global $exports/animals.Animal.CAT i32 (i32.const 0))
@ -15,8 +14,9 @@
(global $exports/Car.TIRES i32 (i32.const 4))
(global $exports/vehicles.Car.TIRES i32 (i32.const 4))
(global $exports/outer.inner.a i32 (i32.const 42))
(global $HEAP_BASE i32 (i32.const 8))
(global $~argc (mut i32) (i32.const 0))
(memory $0 0)
(export "memory" (memory $0))
(export "add" (func $exports/add))
(export "_setargc" (func $~setargc))
(export "subOpt" (func $exports/subOpt|trampoline))
@ -28,21 +28,20 @@
(export "Car.TIRES" (global $exports/Car.TIRES))
(export "Car.getNumTires" (func $exports/Car.getNumTires))
(export "Car#constructor" (func $exports/Car#constructor|trampoline))
(export "Car#get:doors" (func $Car#get:doors))
(export "Car#set:doors" (func $Car#set:doors))
(export "Car#get:numDoors" (func $Car#get:doors))
(export "Car#set:numDoors" (func $Car#set:doors))
(export "Car#get:doors" (func $exports/Car#get:numDoors))
(export "Car#set:doors" (func $exports/Car#set:numDoors))
(export "Car#get:numDoors" (func $exports/Car#get:numDoors))
(export "Car#set:numDoors" (func $exports/Car#set:numDoors))
(export "Car#openDoors" (func $exports/Car#openDoors))
(export "vehicles.Car.TIRES" (global $exports/vehicles.Car.TIRES))
(export "vehicles.Car.getNumTires" (func $exports/Car.getNumTires))
(export "vehicles.Car#constructor" (func $exports/Car#constructor|trampoline))
(export "vehicles.Car#get:doors" (func $Car#get:doors))
(export "vehicles.Car#set:doors" (func $Car#set:doors))
(export "vehicles.Car#get:numDoors" (func $Car#get:doors))
(export "vehicles.Car#set:numDoors" (func $Car#set:doors))
(export "vehicles.Car#get:doors" (func $exports/Car#get:numDoors))
(export "vehicles.Car#set:doors" (func $exports/Car#set:numDoors))
(export "vehicles.Car#get:numDoors" (func $exports/Car#get:numDoors))
(export "vehicles.Car#set:numDoors" (func $exports/Car#set:numDoors))
(export "vehicles.Car#openDoors" (func $exports/Car#openDoors))
(export "outer.inner.a" (global $exports/outer.inner.a))
(export "memory" (memory $0))
(start $start)
(func $exports/add (; 0 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(i32.add
@ -56,37 +55,18 @@
(get_local $1)
)
)
(func $exports/subOpt|trampoline (; 2 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(block $1of1
(block $0of1
(block $oob
(br_table $0of1 $1of1 $oob
(i32.sub
(get_global $~argc)
(i32.const 1)
)
)
)
(unreachable)
)
(set_local $1
(i32.const 0)
)
)
(call $exports/subOpt
(get_local $0)
(get_local $1)
)
)
(func $~setargc (; 3 ;) (type $iv) (param $0 i32)
(set_global $~argc
(get_local $0)
)
)
(func $exports/Car.getNumTires (; 4 ;) (type $i) (result i32)
(func $exports/Car.getNumTires (; 2 ;) (type $i) (result i32)
(i32.const 4)
)
(func $~lib/allocator/arena/allocate_memory (; 5 ;) (type $ii) (param $0 i32) (result i32)
(func $~lib/memory/memory.size (; 3 ;) (type $i) (result i32)
(current_memory)
)
(func $~lib/memory/memory.grow (; 4 ;) (type $ii) (param $0 i32) (result i32)
(grow_memory
(get_local $0)
)
)
(func $~lib/allocator/arena/__memory_allocate (; 5 ;) (type $ii) (param $0 i32) (result i32)
(local $1 i32)
(local $2 i32)
(local $3 i32)
@ -118,14 +98,14 @@
)
(i32.shl
(tee_local $2
(current_memory)
(call $~lib/memory/memory.size)
)
(i32.const 16)
)
)
(if
(i32.lt_s
(grow_memory
(call $~lib/memory/memory.grow
(select
(get_local $2)
(tee_local $3
@ -153,7 +133,7 @@
)
(if
(i32.lt_s
(grow_memory
(call $~lib/memory/memory.grow
(get_local $3)
)
(i32.const 0)
@ -172,14 +152,19 @@
)
(i32.const 0)
)
(func $exports/Car#constructor (; 6 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(func $~lib/memory/memory.allocate (; 6 ;) (type $ii) (param $0 i32) (result i32)
(call $~lib/allocator/arena/__memory_allocate
(get_local $0)
)
)
(func $exports/Car#constructor (; 7 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(if
(i32.eqz
(get_local $0)
)
(i32.store
(tee_local $0
(call $~lib/allocator/arena/allocate_memory
(call $~lib/memory/memory.allocate
(i32.const 4)
)
)
@ -192,11 +177,60 @@
)
(get_local $0)
)
(func $exports/Car#constructor|trampoline (; 7 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(func $exports/Car#get:numDoors (; 8 ;) (type $ii) (param $0 i32) (result i32)
(i32.load
(get_local $0)
)
)
(func $exports/Car#set:numDoors (; 9 ;) (type $iiv) (param $0 i32) (param $1 i32)
(i32.store
(get_local $0)
(get_local $1)
)
)
(func $exports/Car#openDoors (; 10 ;) (type $iv) (param $0 i32)
(nop)
)
(func $start (; 11 ;) (type $v)
(set_global $~lib/allocator/arena/startOffset
(i32.const 8)
)
(set_global $~lib/allocator/arena/offset
(get_global $~lib/allocator/arena/startOffset)
)
)
(func $exports/subOpt|trampoline (; 12 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(block $1of1
(block $0of1
(block $oob
(br_table $0of1 $1of1 $oob
(block $outOfRange
(br_table $0of1 $1of1 $outOfRange
(i32.sub
(get_global $~argc)
(i32.const 1)
)
)
)
(unreachable)
)
(set_local $1
(i32.const 0)
)
)
(call $exports/subOpt
(get_local $0)
(get_local $1)
)
)
(func $~setargc (; 13 ;) (type $iv) (param $0 i32)
(set_global $~argc
(get_local $0)
)
)
(func $exports/Car#constructor|trampoline (; 14 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(block $1of1
(block $0of1
(block $outOfRange
(br_table $0of1 $1of1 $outOfRange
(get_global $~argc)
)
)
@ -211,32 +245,4 @@
(get_local $1)
)
)
(func $Car#get:doors (; 8 ;) (type $ii) (param $0 i32) (result i32)
(i32.load
(get_local $0)
)
)
(func $Car#set:doors (; 9 ;) (type $iiv) (param $0 i32) (param $1 i32)
(i32.store
(get_local $0)
(get_local $1)
)
)
(func $exports/Car#openDoors (; 10 ;) (type $iv) (param $0 i32)
(nop)
)
(func $start (; 11 ;) (type $v)
(set_global $~lib/allocator/arena/startOffset
(i32.and
(i32.add
(get_global $HEAP_BASE)
(i32.const 7)
)
(i32.const -8)
)
)
(set_global $~lib/allocator/arena/offset
(get_global $~lib/allocator/arena/startOffset)
)
)
)

View File

@ -17,14 +17,14 @@ export namespace math {
}
// top-level enum
export enum Animal {
export const enum Animal {
CAT,
DOG
}
// namespaced enum
export namespace animals {
export enum Animal {
export const enum Animal {
CAT,
DOG
}

View File

@ -1,9 +1,9 @@
(module
(type $iii (func (param i32 i32) (result i32)))
(type $iv (func (param i32)))
(type $i (func (result i32)))
(type $ii (func (param i32) (result i32)))
(type $iiv (func (param i32 i32)))
(type $iv (func (param i32)))
(type $v (func))
(global $~lib/internal/allocator/AL_BITS i32 (i32.const 3))
(global $~lib/internal/allocator/AL_SIZE i32 (i32.const 8))
@ -11,7 +11,6 @@
(global $~lib/internal/allocator/MAX_SIZE_32 i32 (i32.const 1073741824))
(global $~lib/allocator/arena/startOffset (mut i32) (i32.const 0))
(global $~lib/allocator/arena/offset (mut i32) (i32.const 0))
(global $~argc (mut i32) (i32.const 0))
(global $exports/Animal.CAT i32 (i32.const 0))
(global $exports/Animal.DOG i32 (i32.const 1))
(global $exports/animals.Animal.CAT i32 (i32.const 0))
@ -20,7 +19,9 @@
(global $exports/vehicles.Car.TIRES i32 (i32.const 4))
(global $exports/outer.inner.a i32 (i32.const 42))
(global $HEAP_BASE i32 (i32.const 8))
(global $~argc (mut i32) (i32.const 0))
(memory $0 0)
(export "memory" (memory $0))
(export "add" (func $exports/add))
(export "_setargc" (func $~setargc))
(export "subOpt" (func $exports/subOpt|trampoline))
@ -46,7 +47,6 @@
(export "vehicles.Car#set:numDoors" (func $exports/vehicles.Car#set:numDoors))
(export "vehicles.Car#openDoors" (func $exports/vehicles.Car#openDoors))
(export "outer.inner.a" (global $exports/outer.inner.a))
(export "memory" (memory $0))
(start $start)
(func $exports/add (; 0 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(i32.add
@ -60,43 +60,24 @@
(get_local $1)
)
)
(func $exports/subOpt|trampoline (; 2 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(block $1of1
(block $0of1
(block $oob
(br_table $0of1 $1of1 $oob
(i32.sub
(get_global $~argc)
(i32.const 1)
)
)
)
(unreachable)
)
(set_local $1
(i32.const 0)
)
)
(call $exports/subOpt
(get_local $0)
(get_local $1)
)
)
(func $~setargc (; 3 ;) (type $iv) (param $0 i32)
(set_global $~argc
(get_local $0)
)
)
(func $exports/math.sub (; 4 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(func $exports/math.sub (; 2 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(i32.sub
(get_local $0)
(get_local $1)
)
)
(func $exports/Car.getNumTires (; 5 ;) (type $i) (result i32)
(i32.const 4)
(func $exports/Car.getNumTires (; 3 ;) (type $i) (result i32)
(get_global $exports/Car.TIRES)
)
(func $~lib/allocator/arena/allocate_memory (; 6 ;) (type $ii) (param $0 i32) (result i32)
(func $~lib/memory/memory.size (; 4 ;) (type $i) (result i32)
(current_memory)
)
(func $~lib/memory/memory.grow (; 5 ;) (type $ii) (param $0 i32) (result i32)
(grow_memory
(get_local $0)
)
)
(func $~lib/allocator/arena/__memory_allocate (; 6 ;) (type $ii) (param $0 i32) (result i32)
(local $1 i32)
(local $2 i32)
(local $3 i32)
@ -109,7 +90,7 @@
(if
(i32.gt_u
(get_local $0)
(i32.const 1073741824)
(get_global $~lib/internal/allocator/MAX_SIZE_32)
)
(unreachable)
)
@ -123,16 +104,16 @@
(get_local $1)
(get_local $0)
)
(i32.const 7)
(get_global $~lib/internal/allocator/AL_MASK)
)
(i32.xor
(i32.const 7)
(get_global $~lib/internal/allocator/AL_MASK)
(i32.const -1)
)
)
)
(set_local $3
(current_memory)
(call $~lib/memory/memory.size)
)
(if
(i32.gt_u
@ -177,14 +158,14 @@
)
(if
(i32.lt_s
(grow_memory
(call $~lib/memory/memory.grow
(get_local $5)
)
(i32.const 0)
)
(if
(i32.lt_s
(grow_memory
(call $~lib/memory/memory.grow
(get_local $4)
)
(i32.const 0)
@ -204,7 +185,14 @@
)
(i32.const 0)
)
(func $exports/Car#constructor (; 7 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(func $~lib/memory/memory.allocate (; 7 ;) (type $ii) (param $0 i32) (result i32)
(return
(call $~lib/allocator/arena/__memory_allocate
(get_local $0)
)
)
)
(func $exports/Car#constructor (; 8 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32)
(i32.store
(tee_local $0
@ -214,7 +202,7 @@
(tee_local $0
(block (result i32)
(set_local $2
(call $~lib/allocator/arena/allocate_memory
(call $~lib/memory/memory.allocate
(i32.const 4)
)
)
@ -231,11 +219,113 @@
)
(get_local $0)
)
(func $exports/Car#constructor|trampoline (; 8 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(func $exports/Car#get:numDoors (; 9 ;) (type $ii) (param $0 i32) (result i32)
(i32.load
(get_local $0)
)
)
(func $exports/Car#set:numDoors (; 10 ;) (type $iiv) (param $0 i32) (param $1 i32)
(i32.store
(get_local $0)
(get_local $1)
)
)
(func $exports/Car#openDoors (; 11 ;) (type $iv) (param $0 i32)
(nop)
)
(func $exports/vehicles.Car.getNumTires (; 12 ;) (type $i) (result i32)
(get_global $exports/vehicles.Car.TIRES)
)
(func $exports/vehicles.Car#constructor (; 13 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32)
(i32.store
(tee_local $0
(if (result i32)
(get_local $0)
(get_local $0)
(tee_local $0
(block (result i32)
(set_local $2
(call $~lib/memory/memory.allocate
(i32.const 4)
)
)
(i32.store
(get_local $2)
(get_local $1)
)
(get_local $2)
)
)
)
)
(get_local $1)
)
(get_local $0)
)
(func $exports/vehicles.Car#get:numDoors (; 14 ;) (type $ii) (param $0 i32) (result i32)
(i32.load
(get_local $0)
)
)
(func $exports/vehicles.Car#set:numDoors (; 15 ;) (type $iiv) (param $0 i32) (param $1 i32)
(i32.store
(get_local $0)
(get_local $1)
)
)
(func $exports/vehicles.Car#openDoors (; 16 ;) (type $iv) (param $0 i32)
(nop)
)
(func $start (; 17 ;) (type $v)
(set_global $~lib/allocator/arena/startOffset
(i32.and
(i32.add
(get_global $HEAP_BASE)
(get_global $~lib/internal/allocator/AL_MASK)
)
(i32.xor
(get_global $~lib/internal/allocator/AL_MASK)
(i32.const -1)
)
)
)
(set_global $~lib/allocator/arena/offset
(get_global $~lib/allocator/arena/startOffset)
)
)
(func $exports/subOpt|trampoline (; 18 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(block $1of1
(block $0of1
(block $oob
(br_table $0of1 $1of1 $oob
(block $outOfRange
(br_table $0of1 $1of1 $outOfRange
(i32.sub
(get_global $~argc)
(i32.const 1)
)
)
)
(unreachable)
)
(set_local $1
(i32.const 0)
)
)
(call $exports/subOpt
(get_local $0)
(get_local $1)
)
)
(func $~setargc (; 19 ;) (type $iv) (param $0 i32)
(set_global $~argc
(get_local $0)
)
)
(func $exports/Car#constructor|trampoline (; 20 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(block $1of1
(block $0of1
(block $outOfRange
(br_table $0of1 $1of1 $outOfRange
(get_global $~argc)
)
)
@ -250,66 +340,22 @@
(get_local $1)
)
)
(func $Car#get:doors (; 9 ;) (type $ii) (param $0 i32) (result i32)
(func $Car#get:doors (; 21 ;) (type $ii) (param $0 i32) (result i32)
(i32.load
(get_local $0)
)
)
(func $Car#set:doors (; 10 ;) (type $iiv) (param $0 i32) (param $1 i32)
(func $Car#set:doors (; 22 ;) (type $iiv) (param $0 i32) (param $1 i32)
(i32.store
(get_local $0)
(get_local $1)
)
)
(func $exports/Car#get:numDoors (; 11 ;) (type $ii) (param $0 i32) (result i32)
(i32.load
(get_local $0)
)
)
(func $exports/Car#set:numDoors (; 12 ;) (type $iiv) (param $0 i32) (param $1 i32)
(i32.store
(get_local $0)
(get_local $1)
)
)
(func $exports/Car#openDoors (; 13 ;) (type $iv) (param $0 i32)
(nop)
)
(func $exports/vehicles.Car.getNumTires (; 14 ;) (type $i) (result i32)
(i32.const 4)
)
(func $exports/vehicles.Car#constructor (; 15 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32)
(i32.store
(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 4)
)
)
(i32.store
(get_local $2)
(get_local $1)
)
(get_local $2)
)
)
)
)
(get_local $1)
)
(get_local $0)
)
(func $exports/vehicles.Car#constructor|trampoline (; 16 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(func $exports/vehicles.Car#constructor|trampoline (; 23 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(block $1of1
(block $0of1
(block $oob
(br_table $0of1 $1of1 $oob
(block $outOfRange
(br_table $0of1 $1of1 $outOfRange
(get_global $~argc)
)
)
@ -324,46 +370,15 @@
(get_local $1)
)
)
(func $vehicles.Car#get:doors (; 17 ;) (type $ii) (param $0 i32) (result i32)
(func $vehicles.Car#get:doors (; 24 ;) (type $ii) (param $0 i32) (result i32)
(i32.load
(get_local $0)
)
)
(func $vehicles.Car#set:doors (; 18 ;) (type $iiv) (param $0 i32) (param $1 i32)
(func $vehicles.Car#set:doors (; 25 ;) (type $iiv) (param $0 i32) (param $1 i32)
(i32.store
(get_local $0)
(get_local $1)
)
)
(func $exports/vehicles.Car#get:numDoors (; 19 ;) (type $ii) (param $0 i32) (result i32)
(i32.load
(get_local $0)
)
)
(func $exports/vehicles.Car#set:numDoors (; 20 ;) (type $iiv) (param $0 i32) (param $1 i32)
(i32.store
(get_local $0)
(get_local $1)
)
)
(func $exports/vehicles.Car#openDoors (; 21 ;) (type $iv) (param $0 i32)
(nop)
)
(func $start (; 22 ;) (type $v)
(set_global $~lib/allocator/arena/startOffset
(i32.and
(i32.add
(get_global $HEAP_BASE)
(i32.const 7)
)
(i32.xor
(i32.const 7)
(i32.const -1)
)
)
)
(set_global $~lib/allocator/arena/offset
(get_global $~lib/allocator/arena/startOffset)
)
)
)

View File

@ -4,10 +4,12 @@
(import "foo" "bar" (func $external/foo.bar))
(import "external" "bar" (func $external/two))
(import "foo" "baz" (func $external/three))
(import "foo" "var" (global $external/var_ i32))
(memory $0 0)
(export "foo" (func $external/foo))
(export "memory" (memory $0))
(export "foo.bar" (func $external/foo.bar))
(export "foo" (func $external/foo))
(export "two" (func $external/two))
(export "three" (func $external/three))
(export "memory" (memory $0))
(export "var_" (global $external/var_))
)

View File

@ -7,9 +7,10 @@
(import "foo" "var" (global $external/var_ i32))
(global $HEAP_BASE i32 (i32.const 8))
(memory $0 0)
(export "foo" (func $external/foo))
(export "memory" (memory $0))
(export "foo.bar" (func $external/foo.bar))
(export "foo" (func $external/foo))
(export "two" (func $external/two))
(export "three" (func $external/three))
(export "memory" (memory $0))
(export "var_" (global $external/var_))
)

View File

@ -67,8 +67,8 @@
(func $function-types/makeAndAdd<i32>|trampoline (; 9 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(block $1of1
(block $0of1
(block $oob
(br_table $0of1 $1of1 $oob
(block $outOfRange
(br_table $0of1 $1of1 $outOfRange
(i32.sub
(get_global $~argc)
(i32.const 2)

View File

@ -84,8 +84,8 @@
(func $function-types/makeAndAdd<i32>|trampoline (; 11 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(block $1of1
(block $0of1
(block $oob
(br_table $0of1 $1of1 $oob
(block $outOfRange
(br_table $0of1 $1of1 $outOfRange
(i32.sub
(get_global $~argc)
(i32.const 2)

View File

@ -5,6 +5,7 @@
(global $../../examples/i64-polyfill/assembly/i64/lo (mut i32) (i32.const 0))
(global $../../examples/i64-polyfill/assembly/i64/hi (mut i32) (i32.const 0))
(memory $0 0)
(export "memory" (memory $0))
(export "getHi" (func $../../examples/i64-polyfill/assembly/i64/getHi))
(export "getLo" (func $../../examples/i64-polyfill/assembly/i64/getLo))
(export "clz" (func $../../examples/i64-polyfill/assembly/i64/clz))
@ -36,7 +37,6 @@
(export "gt_u" (func $../../examples/i64-polyfill/assembly/i64/gt_u))
(export "ge_s" (func $../../examples/i64-polyfill/assembly/i64/ge_s))
(export "ge_u" (func $../../examples/i64-polyfill/assembly/i64/ge_u))
(export "memory" (memory $0))
(func $../../examples/i64-polyfill/assembly/i64/getHi (; 0 ;) (type $i) (result i32)
(get_global $../../examples/i64-polyfill/assembly/i64/hi)
)

View File

@ -8,6 +8,7 @@
(global $Infinity f64 (f64.const inf))
(global $HEAP_BASE i32 (i32.const 8))
(memory $0 0)
(export "memory" (memory $0))
(export "getHi" (func $../../examples/i64-polyfill/assembly/i64/getHi))
(export "getLo" (func $../../examples/i64-polyfill/assembly/i64/getLo))
(export "clz" (func $../../examples/i64-polyfill/assembly/i64/clz))
@ -39,7 +40,6 @@
(export "gt_u" (func $../../examples/i64-polyfill/assembly/i64/gt_u))
(export "ge_s" (func $../../examples/i64-polyfill/assembly/i64/ge_s))
(export "ge_u" (func $../../examples/i64-polyfill/assembly/i64/ge_u))
(export "memory" (memory $0))
(func $../../examples/i64-polyfill/assembly/i64/getHi (; 0 ;) (type $i) (result i32)
(get_global $../../examples/i64-polyfill/assembly/i64/hi)
)

View File

@ -5,11 +5,11 @@
(import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32)))
(memory $0 1)
(data (i32.const 8) "\05\00\00\00i\00f\00.\00t\00s")
(export "memory" (memory $0))
(export "ifThenElse" (func $if/ifThenElse))
(export "ifThen" (func $if/ifThen))
(export "ifThenElseBlock" (func $if/ifThenElse))
(export "ifAlwaysReturns" (func $if/ifAlwaysReturns))
(export "memory" (memory $0))
(start $start)
(func $if/ifThenElse (; 1 ;) (type $ii) (param $0 i32) (result i32)
(if (result i32)

View File

@ -6,11 +6,11 @@
(global $HEAP_BASE i32 (i32.const 24))
(memory $0 1)
(data (i32.const 8) "\05\00\00\00i\00f\00.\00t\00s\00")
(export "memory" (memory $0))
(export "ifThenElse" (func $if/ifThenElse))
(export "ifThen" (func $if/ifThen))
(export "ifThenElseBlock" (func $if/ifThenElseBlock))
(export "ifAlwaysReturns" (func $if/ifAlwaysReturns))
(export "memory" (memory $0))
(start $start)
(func $if/ifThenElse (; 1 ;) (type $ii) (param $0 i32) (result i32)
(if

View File

@ -34,17 +34,17 @@
(i32.add
(i32.add
(call $export/add
(i32.const 1)
(i32.const 2)
(get_global $export/a)
(get_global $export/b)
)
(call $export/sub
(i32.const 2)
(i32.const 3)
(get_global $export/b)
(get_global $export/c)
)
)
(call $export/mul
(i32.const 3)
(i32.const 1)
(get_global $export/c)
(get_global $export/a)
)
)
)
@ -53,17 +53,17 @@
(i32.add
(i32.add
(call $export/add
(i32.const 1)
(i32.const 2)
(get_global $export/a)
(get_global $export/b)
)
(call $export/sub
(i32.const 2)
(i32.const 3)
(get_global $export/b)
(get_global $export/c)
)
)
(call $export/mul
(i32.const 3)
(i32.const 1)
(get_global $export/c)
(get_global $export/a)
)
)
)

View File

@ -37,13 +37,13 @@
(f64.const 1.5)
)
(set_local $3
(i32.const 10)
(get_global $infer-type/i)
)
(set_local $4
(i64.const 4294967296)
(get_global $infer-type/I)
)
(set_local $5
(f64.const 1.5)
(get_global $infer-type/F)
)
)
(func $infer-type/reti (; 2 ;) (type $i) (result i32)
@ -62,13 +62,13 @@
(local $0 i32)
(local $1 i32)
(drop
(i32.const 10)
(get_global $infer-type/i)
)
(drop
(i64.const 4294967296)
(get_global $infer-type/I)
)
(drop
(f64.const 1.5)
(get_global $infer-type/F)
)
(call $infer-type/locals)
(set_global $infer-type/ri

View File

@ -1,10 +1,10 @@
(module
(type $v (func))
(memory $0 0)
(export "foo" (func $inlining-recursive/foo))
(export "baz" (func $inlining-recursive/baz))
(export "bar" (func $inlining-recursive/bar))
(export "memory" (memory $0))
(export "foo" (func $inlining-recursive/foo))
(export "bar" (func $inlining-recursive/bar))
(export "baz" (func $inlining-recursive/baz))
(func $inlining-recursive/foo (; 0 ;) (type $v)
(call $inlining-recursive/foo)
)

View File

@ -2,10 +2,10 @@
(type $v (func))
(global $HEAP_BASE i32 (i32.const 8))
(memory $0 0)
(export "foo" (func $inlining-recursive/foo))
(export "baz" (func $inlining-recursive/baz))
(export "bar" (func $inlining-recursive/bar))
(export "memory" (memory $0))
(export "foo" (func $inlining-recursive/foo))
(export "bar" (func $inlining-recursive/bar))
(export "baz" (func $inlining-recursive/baz))
(func $inlining-recursive/foo (; 0 ;) (type $v)
(block $inlining-recursive/foo|inlined.0
(call $inlining-recursive/foo)

View File

@ -9,9 +9,9 @@
(elem (i32.const 0) $inlining/test_funcs~anonymous|0)
(memory $0 1)
(data (i32.const 8) "\0b\00\00\00i\00n\00l\00i\00n\00i\00n\00g\00.\00t\00s")
(export "test" (func $inlining/test))
(export "memory" (memory $0))
(export "table" (table $0))
(export "test" (func $inlining/test))
(start $start)
(func $inlining/test (; 1 ;) (type $i) (result i32)
(i32.const 3)

View File

@ -11,13 +11,13 @@
(elem (i32.const 0) $inlining/test_funcs~anonymous|0)
(memory $0 1)
(data (i32.const 8) "\0b\00\00\00i\00n\00l\00i\00n\00i\00n\00g\00.\00t\00s\00")
(export "test" (func $inlining/test))
(export "memory" (memory $0))
(export "table" (table $0))
(export "test" (func $inlining/test))
(start $start)
(func $inlining/test (; 1 ;) (type $i) (result i32)
(i32.add
(i32.const 1)
(get_global $inlining/constantGlobal)
(i32.const 2)
)
)

View File

@ -1,87 +1,113 @@
(module
(type $v (func))
(global $i8.MIN_VALUE i32 (i32.const -128))
(global $i8.MAX_VALUE i32 (i32.const 127))
(global $i16.MIN_VALUE i32 (i32.const -32768))
(global $i16.MAX_VALUE i32 (i32.const 32767))
(global $i32.MIN_VALUE i32 (i32.const -2147483648))
(global $i32.MAX_VALUE i32 (i32.const 2147483647))
(global $i64.MIN_VALUE i64 (i64.const -9223372036854775808))
(global $i64.MAX_VALUE i64 (i64.const 9223372036854775807))
(global $isize.MIN_VALUE i32 (i32.const -2147483648))
(global $isize.MAX_VALUE i32 (i32.const 2147483647))
(global $u8.MIN_VALUE i32 (i32.const 0))
(global $u8.MAX_VALUE i32 (i32.const 255))
(global $u16.MIN_VALUE i32 (i32.const 0))
(global $u16.MAX_VALUE i32 (i32.const 65535))
(global $u32.MIN_VALUE i32 (i32.const 0))
(global $u32.MAX_VALUE i32 (i32.const -1))
(global $u64.MIN_VALUE i64 (i64.const 0))
(global $u64.MAX_VALUE i64 (i64.const -1))
(global $usize.MIN_VALUE i32 (i32.const 0))
(global $usize.MAX_VALUE i32 (i32.const -1))
(global $bool.MIN_VALUE i32 (i32.const 0))
(global $bool.MAX_VALUE i32 (i32.const 1))
(global $f32.MIN_SAFE_INTEGER f32 (f32.const -16777215))
(global $f32.MAX_SAFE_INTEGER f32 (f32.const 16777215))
(global $f64.MIN_SAFE_INTEGER f64 (f64.const -9007199254740991))
(global $f64.MAX_SAFE_INTEGER f64 (f64.const 9007199254740991))
(global $HEAP_BASE i32 (i32.const 8))
(memory $0 0)
(export "memory" (memory $0))
(start $start)
(func $start (; 0 ;) (type $v)
(drop
(i32.const -128)
(get_global $i8.MIN_VALUE)
)
(drop
(i32.const 127)
(get_global $i8.MAX_VALUE)
)
(drop
(i32.const -32768)
(get_global $i16.MIN_VALUE)
)
(drop
(i32.const 32767)
(get_global $i16.MAX_VALUE)
)
(drop
(i32.const -2147483648)
(get_global $i32.MIN_VALUE)
)
(drop
(i32.const 2147483647)
(get_global $i32.MAX_VALUE)
)
(drop
(i64.const -9223372036854775808)
(get_global $i64.MIN_VALUE)
)
(drop
(i64.const 9223372036854775807)
(get_global $i64.MAX_VALUE)
)
(drop
(i32.const -2147483648)
(get_global $isize.MIN_VALUE)
)
(drop
(i32.const 2147483647)
(get_global $isize.MAX_VALUE)
)
(drop
(i32.const 0)
(get_global $u8.MIN_VALUE)
)
(drop
(i32.const 255)
(get_global $u8.MAX_VALUE)
)
(drop
(i32.const 0)
(get_global $u16.MIN_VALUE)
)
(drop
(i32.const 65535)
(get_global $u16.MAX_VALUE)
)
(drop
(i32.const 0)
(get_global $u32.MIN_VALUE)
)
(drop
(i32.const -1)
(get_global $u32.MAX_VALUE)
)
(drop
(i64.const 0)
(get_global $u64.MIN_VALUE)
)
(drop
(i64.const -1)
(get_global $u64.MAX_VALUE)
)
(drop
(i32.const 0)
(get_global $usize.MIN_VALUE)
)
(drop
(i32.const -1)
(get_global $usize.MAX_VALUE)
)
(drop
(i32.const 0)
(get_global $bool.MIN_VALUE)
)
(drop
(i32.const 1)
(get_global $bool.MAX_VALUE)
)
(drop
(f32.const -16777215)
(get_global $f32.MIN_SAFE_INTEGER)
)
(drop
(f32.const 16777215)
(get_global $f32.MAX_SAFE_INTEGER)
)
(drop
(f64.const -9007199254740991)
(get_global $f64.MIN_SAFE_INTEGER)
)
(drop
(f64.const 9007199254740991)
(get_global $f64.MAX_SAFE_INTEGER)
)
)
)

View File

@ -2,22 +2,11 @@
(type $iii (func (param i32 i32) (result i32)))
(type $v (func))
(global $main/code (mut i32) (i32.const 0))
(global $~started (mut i32) (i32.const 0))
(memory $0 0)
(export "main" (func $main/main))
(export "memory" (memory $0))
(export "main" (func $main/main))
(start $start)
(func $main/main (; 0 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(if
(i32.eqz
(get_global $~started)
)
(block
(call $start)
(set_global $~started
(i32.const 1)
)
)
)
(get_global $main/code)
)
(func $start (; 1 ;) (type $v)

View File

@ -2,23 +2,12 @@
(type $iii (func (param i32 i32) (result i32)))
(type $v (func))
(global $main/code (mut i32) (i32.const 0))
(global $~started (mut i32) (i32.const 0))
(global $HEAP_BASE i32 (i32.const 8))
(memory $0 0)
(export "main" (func $main/main))
(export "memory" (memory $0))
(export "main" (func $main/main))
(start $start)
(func $main/main (; 0 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(if
(i32.eqz
(get_global $~started)
)
(block
(call $start)
(set_global $~started
(i32.const 1)
)
)
)
(get_global $main/code)
)
(func $start (; 1 ;) (type $v)

View File

@ -4,8 +4,8 @@
(type $Fi (func (param f64) (result i32)))
(type $FFFF (func (param f64 f64 f64) (result f64)))
(memory $0 0)
(export "computeLine" (func $../../examples/mandelbrot/assembly/index/computeLine))
(export "memory" (memory $0))
(export "computeLine" (func $../../examples/mandelbrot/assembly/index/computeLine))
(func $~lib/math/NativeMath.log (; 0 ;) (type $FF) (param $0 f64) (result f64)
(local $1 i32)
(local $2 i32)

View File

@ -4,10 +4,11 @@
(type $Fi (func (param f64) (result i32)))
(type $FFFF (func (param f64 f64 f64) (result f64)))
(global $../../examples/mandelbrot/assembly/index/NUM_COLORS i32 (i32.const 2048))
(global $~lib/math/NativeMath.LN2 f64 (f64.const 0.6931471805599453))
(global $HEAP_BASE i32 (i32.const 8))
(memory $0 0)
(export "computeLine" (func $../../examples/mandelbrot/assembly/index/computeLine))
(export "memory" (memory $0))
(export "computeLine" (func $../../examples/mandelbrot/assembly/index/computeLine))
(func $~lib/math/NativeMath.log (; 0 ;) (type $FF) (param $0 f64) (result f64)
(local $1 i64)
(local $2 i32)
@ -571,7 +572,7 @@
)
)
)
(f64.const 0.6931471805599453)
(get_global $~lib/math/NativeMath.LN2)
)
)
(set_local $17
@ -583,7 +584,7 @@
(f64.mul
(f64.convert_s/i32
(i32.sub
(i32.const 2048)
(get_global $../../examples/mandelbrot/assembly/index/NUM_COLORS)
(i32.const 1)
)
)
@ -608,7 +609,7 @@
)
)
(i32.sub
(i32.const 2048)
(get_global $../../examples/mandelbrot/assembly/index/NUM_COLORS)
(i32.const 1)
)
)

View File

@ -5,9 +5,9 @@
(import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32)))
(memory $0 1)
(data (i32.const 8) "\0e\00\00\00m\00a\00n\00y\00-\00l\00o\00c\00a\00l\00s\00.\00t\00s")
(export "memory" (memory $0))
(export "testI32" (func $many-locals/testI32))
(export "testI8" (func $many-locals/testI8))
(export "memory" (memory $0))
(start $start)
(func $many-locals/testI32 (; 1 ;) (type $ii) (param $0 i32) (result i32)
(get_local $0)

View File

@ -6,9 +6,9 @@
(global $HEAP_BASE i32 (i32.const 40))
(memory $0 1)
(data (i32.const 8) "\0e\00\00\00m\00a\00n\00y\00-\00l\00o\00c\00a\00l\00s\00.\00t\00s\00")
(export "memory" (memory $0))
(export "testI32" (func $many-locals/testI32))
(export "testI8" (func $many-locals/testI8))
(export "memory" (memory $0))
(start $start)
(func $many-locals/testI32 (; 1 ;) (type $ii) (param $0 i32) (result i32)
(local $1 i32)

View File

@ -6,8 +6,8 @@
(global $memcpy/dest (mut i32) (i32.const 0))
(memory $0 1)
(data (i32.const 8) "\t\00\00\00m\00e\00m\00c\00p\00y\00.\00t\00s")
(export "memcpy" (func $memcpy/memcpy))
(export "memory" (memory $0))
(export "memcpy" (func $memcpy/memcpy))
(start $start)
(func $memcpy/memcpy (; 1 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(local $3 i32)

View File

@ -8,8 +8,8 @@
(global $HEAP_BASE i32 (i32.const 32))
(memory $0 1)
(data (i32.const 8) "\t\00\00\00m\00e\00m\00c\00p\00y\00.\00t\00s\00")
(export "memcpy" (func $memcpy/memcpy))
(export "memory" (memory $0))
(export "memcpy" (func $memcpy/memcpy))
(start $start)
(func $memcpy/memcpy (; 1 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(local $3 i32)
@ -1816,26 +1816,26 @@
)
(func $start (; 2 ;) (type $v)
(i64.store
(i32.const 8)
(get_global $memcpy/base)
(i64.const 1229782938247303441)
)
(i64.store
(i32.add
(i32.const 8)
(get_global $memcpy/base)
(i32.const 8)
)
(i64.const 2459565876494606882)
)
(i64.store
(i32.add
(i32.const 8)
(get_global $memcpy/base)
(i32.const 16)
)
(i64.const 3689348814741910323)
)
(i64.store
(i32.add
(i32.const 8)
(get_global $memcpy/base)
(i32.const 24)
)
(i64.const 4919131752989213764)
@ -1843,11 +1843,11 @@
(set_global $memcpy/dest
(call $memcpy/memcpy
(i32.add
(i32.const 8)
(get_global $memcpy/base)
(i32.const 1)
)
(i32.add
(i32.const 8)
(get_global $memcpy/base)
(i32.const 16)
)
(i32.const 4)
@ -1858,7 +1858,7 @@
(i32.eq
(get_global $memcpy/dest)
(i32.add
(i32.const 8)
(get_global $memcpy/base)
(i32.const 1)
)
)
@ -1877,7 +1877,7 @@
(i32.eqz
(i64.eq
(i64.load
(i32.const 8)
(get_global $memcpy/base)
)
(i64.const 1229783084848853777)
)
@ -1894,8 +1894,8 @@
)
(set_global $memcpy/dest
(call $memcpy/memcpy
(i32.const 8)
(i32.const 8)
(get_global $memcpy/base)
(get_global $memcpy/base)
(i32.const 32)
)
)
@ -1903,7 +1903,7 @@
(i32.eqz
(i32.eq
(get_global $memcpy/dest)
(i32.const 8)
(get_global $memcpy/base)
)
)
(block
@ -1920,7 +1920,7 @@
(i32.eqz
(i64.eq
(i64.load
(i32.const 8)
(get_global $memcpy/base)
)
(i64.const 1229783084848853777)
)
@ -1940,7 +1940,7 @@
(i64.eq
(i64.load
(i32.add
(i32.const 8)
(get_global $memcpy/base)
(i32.const 8)
)
)
@ -1962,7 +1962,7 @@
(i64.eq
(i64.load
(i32.add
(i32.const 8)
(get_global $memcpy/base)
(i32.const 16)
)
)
@ -1984,7 +1984,7 @@
(i64.eq
(i64.load
(i32.add
(i32.const 8)
(get_global $memcpy/base)
(i32.const 24)
)
)
@ -2004,11 +2004,11 @@
(set_global $memcpy/dest
(call $memcpy/memcpy
(i32.add
(i32.const 8)
(get_global $memcpy/base)
(i32.const 5)
)
(i32.add
(i32.const 8)
(get_global $memcpy/base)
(i32.const 28)
)
(i32.const 3)
@ -2018,7 +2018,7 @@
(i32.eqz
(i64.eq
(i64.load
(i32.const 8)
(get_global $memcpy/base)
)
(i64.const 4919131679688438545)
)
@ -2036,11 +2036,11 @@
(set_global $memcpy/dest
(call $memcpy/memcpy
(i32.add
(i32.const 8)
(get_global $memcpy/base)
(i32.const 8)
)
(i32.add
(i32.const 8)
(get_global $memcpy/base)
(i32.const 16)
)
(i32.const 15)
@ -2050,7 +2050,7 @@
(i32.eqz
(i64.eq
(i64.load
(i32.const 8)
(get_global $memcpy/base)
)
(i64.const 4919131679688438545)
)
@ -2070,7 +2070,7 @@
(i64.eq
(i64.load
(i32.add
(i32.const 8)
(get_global $memcpy/base)
(i32.const 8)
)
)
@ -2092,7 +2092,7 @@
(i64.eq
(i64.load
(i32.add
(i32.const 8)
(get_global $memcpy/base)
(i32.const 16)
)
)
@ -2114,7 +2114,7 @@
(i64.eq
(i64.load
(i32.add
(i32.const 8)
(get_global $memcpy/base)
(i32.const 24)
)
)

View File

@ -312,26 +312,26 @@
)
(func $start (; 2 ;) (type $v)
(i64.store
(i32.const 8)
(get_global $memmove/base)
(i64.const 1229782938247303441)
)
(i64.store
(i32.add
(i32.const 8)
(get_global $memmove/base)
(i32.const 8)
)
(i64.const 2459565876494606882)
)
(i64.store
(i32.add
(i32.const 8)
(get_global $memmove/base)
(i32.const 16)
)
(i64.const 3689348814741910323)
)
(i64.store
(i32.add
(i32.const 8)
(get_global $memmove/base)
(i32.const 24)
)
(i64.const 4919131752989213764)
@ -339,11 +339,11 @@
(set_global $memmove/dest
(call $memmove/memmove
(i32.add
(i32.const 8)
(get_global $memmove/base)
(i32.const 1)
)
(i32.add
(i32.const 8)
(get_global $memmove/base)
(i32.const 16)
)
(i32.const 4)
@ -354,7 +354,7 @@
(i32.eq
(get_global $memmove/dest)
(i32.add
(i32.const 8)
(get_global $memmove/base)
(i32.const 1)
)
)
@ -373,7 +373,7 @@
(i32.eqz
(i64.eq
(i64.load
(i32.const 8)
(get_global $memmove/base)
)
(i64.const 1229783084848853777)
)
@ -390,8 +390,8 @@
)
(set_global $memmove/dest
(call $memmove/memmove
(i32.const 8)
(i32.const 8)
(get_global $memmove/base)
(get_global $memmove/base)
(i32.const 32)
)
)
@ -399,7 +399,7 @@
(i32.eqz
(i32.eq
(get_global $memmove/dest)
(i32.const 8)
(get_global $memmove/base)
)
)
(block
@ -416,7 +416,7 @@
(i32.eqz
(i64.eq
(i64.load
(i32.const 8)
(get_global $memmove/base)
)
(i64.const 1229783084848853777)
)
@ -436,7 +436,7 @@
(i64.eq
(i64.load
(i32.add
(i32.const 8)
(get_global $memmove/base)
(i32.const 8)
)
)
@ -458,7 +458,7 @@
(i64.eq
(i64.load
(i32.add
(i32.const 8)
(get_global $memmove/base)
(i32.const 16)
)
)
@ -480,7 +480,7 @@
(i64.eq
(i64.load
(i32.add
(i32.const 8)
(get_global $memmove/base)
(i32.const 24)
)
)
@ -500,11 +500,11 @@
(set_global $memmove/dest
(call $memmove/memmove
(i32.add
(i32.const 8)
(get_global $memmove/base)
(i32.const 5)
)
(i32.add
(i32.const 8)
(get_global $memmove/base)
(i32.const 28)
)
(i32.const 3)
@ -514,7 +514,7 @@
(i32.eqz
(i64.eq
(i64.load
(i32.const 8)
(get_global $memmove/base)
)
(i64.const 4919131679688438545)
)
@ -532,11 +532,11 @@
(set_global $memmove/dest
(call $memmove/memmove
(i32.add
(i32.const 8)
(get_global $memmove/base)
(i32.const 8)
)
(i32.add
(i32.const 8)
(get_global $memmove/base)
(i32.const 16)
)
(i32.const 15)
@ -546,7 +546,7 @@
(i32.eqz
(i64.eq
(i64.load
(i32.const 8)
(get_global $memmove/base)
)
(i64.const 4919131679688438545)
)
@ -566,7 +566,7 @@
(i64.eq
(i64.load
(i32.add
(i32.const 8)
(get_global $memmove/base)
(i32.const 8)
)
)
@ -588,7 +588,7 @@
(i64.eq
(i64.load
(i32.add
(i32.const 8)
(get_global $memmove/base)
(i32.const 16)
)
)
@ -610,7 +610,7 @@
(i64.eq
(i64.load
(i32.add
(i32.const 8)
(get_global $memmove/base)
(i32.const 24)
)
)

View File

@ -4,7 +4,6 @@
(type $v (func))
(import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32)))
(global $memset/dest (mut i32) (i32.const 0))
(global $HEAP_BASE i32 (i32.const 32))
(memory $0 1)
(data (i32.const 8) "\t\00\00\00m\00e\00m\00s\00e\00t\00.\00t\00s")
(export "memory" (memory $0))
@ -345,7 +344,7 @@
)
(func $start (; 2 ;) (type $v)
(set_global $memset/dest
(get_global $HEAP_BASE)
(i32.const 32)
)
(drop
(call $memset/memset

View File

@ -1,8 +1,8 @@
(module
(type $i (func (result i32)))
(memory $0 0)
(export "default" (func $named-export-default/get3))
(export "memory" (memory $0))
(export "default" (func $named-export-default/get3))
(func $named-export-default/get3 (; 0 ;) (type $i) (result i32)
(i32.const 3)
)

View File

@ -2,8 +2,8 @@
(type $i (func (result i32)))
(global $HEAP_BASE i32 (i32.const 8))
(memory $0 0)
(export "default" (func $named-export-default/get3))
(export "memory" (memory $0))
(export "default" (func $named-export-default/get3))
(func $named-export-default/get3 (; 0 ;) (type $i) (result i32)
(i32.const 3)
)

View File

@ -1,8 +1,8 @@
(module
(type $i (func (result i32)))
(memory $0 0)
(export "getValue" (func $named-import-default/getValue))
(export "memory" (memory $0))
(export "getValue" (func $named-import-default/getValue))
(func $named-export-default/get3 (; 0 ;) (type $i) (result i32)
(i32.const 3)
)

View File

@ -2,8 +2,8 @@
(type $i (func (result i32)))
(global $HEAP_BASE i32 (i32.const 8))
(memory $0 0)
(export "getValue" (func $named-import-default/getValue))
(export "memory" (memory $0))
(export "getValue" (func $named-import-default/getValue))
(func $named-export-default/get3 (; 0 ;) (type $i) (result i32)
(i32.const 3)
)

View File

@ -2,7 +2,7 @@ namespace Outer {
export namespace Inner {
export var aVar: i32 = 0;
export function aFunc(): i32 { return aVar; }
export enum anEnum { ONE = 1, TWO = 2 }
export const enum anEnum { ONE = 1, TWO = 2 }
}
}
@ -10,7 +10,7 @@ Outer.Inner.aVar;
Outer.Inner.aFunc();
Outer.Inner.anEnum.ONE;
enum Joined {
const enum Joined { // FIXME: tsc doesn't accept this when 'const'?
THREE = 3
}
namespace Joined {

View File

@ -13,7 +13,7 @@
(get_global $namespace/Outer.Inner.aVar)
)
(func $namespace/Joined.anotherFunc (; 1 ;) (type $i) (result i32)
(i32.const 3)
(get_global $namespace/Joined.THREE)
)
(func $start (; 2 ;) (type $v)
(drop
@ -23,7 +23,7 @@
(call $namespace/Outer.Inner.aFunc)
)
(drop
(i32.const 1)
(get_global $namespace/Outer.Inner.anEnum.ONE)
)
(drop
(call $namespace/Joined.anotherFunc)

View File

@ -0,0 +1,18 @@
(module
(type $i (func (result i32)))
(type $ii (func (param i32) (result i32)))
(memory $0 0)
(export "memory" (memory $0))
(export "test" (func $new-without-allocator/test))
(func $~lib/memory/memory.allocate (; 0 ;) (type $ii) (param $0 i32) (result i32)
(unreachable)
)
(func $new-without-allocator/test (; 1 ;) (type $i) (result i32)
(drop
(call $~lib/memory/memory.allocate
(i32.const 0)
)
)
(i32.const 3)
)
)

View File

@ -1,5 +1,3 @@
// Expect error: TS2304: Cannot find name 'allocate_memory'.
// Expect error: AS214: An allocator must be declared to allocate memory. Try importing allocator/arena or allocator/tlsf.
class A {}
export function test(): i32 {

View File

@ -0,0 +1,26 @@
(module
(type $i (func (result i32)))
(type $ii (func (param i32) (result i32)))
(global $HEAP_BASE i32 (i32.const 8))
(memory $0 0)
(export "memory" (memory $0))
(export "test" (func $new-without-allocator/test))
(func $~lib/memory/memory.allocate (; 0 ;) (type $ii) (param $0 i32) (result i32)
(unreachable)
)
(func $new-without-allocator/test (; 1 ;) (type $i) (result i32)
(local $0 i32)
(local $1 i32)
(set_local $1
(block (result i32)
(set_local $0
(call $~lib/memory/memory.allocate
(i32.const 0)
)
)
(get_local $0)
)
)
(i32.const 3)
)
)

View File

@ -1,5 +1,6 @@
(module
(type $ii (func (param i32) (result i32)))
(type $i (func (result i32)))
(type $iv (func (param i32)))
(type $iiiiv (func (param i32 i32 i32 i32)))
(type $iii (func (param i32 i32) (result i32)))
@ -8,13 +9,20 @@
(import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32)))
(global $~lib/allocator/arena/startOffset (mut i32) (i32.const 0))
(global $~lib/allocator/arena/offset (mut i32) (i32.const 0))
(global $HEAP_BASE i32 (i32.const 76))
(memory $0 1)
(data (i32.const 8) "\0b\00\00\00h\00e\00l\00l\00o\00 \00w\00o\00r\00l\00d")
(data (i32.const 36) "\11\00\00\00o\00b\00j\00e\00c\00t\00-\00l\00i\00t\00e\00r\00a\00l\00.\00t\00s")
(export "memory" (memory $0))
(start $start)
(func $~lib/allocator/arena/allocate_memory (; 1 ;) (type $ii) (param $0 i32) (result i32)
(func $~lib/memory/memory.size (; 1 ;) (type $i) (result i32)
(current_memory)
)
(func $~lib/memory/memory.grow (; 2 ;) (type $ii) (param $0 i32) (result i32)
(grow_memory
(get_local $0)
)
)
(func $~lib/allocator/arena/__memory_allocate (; 3 ;) (type $ii) (param $0 i32) (result i32)
(local $1 i32)
(local $2 i32)
(local $3 i32)
@ -46,14 +54,14 @@
)
(i32.shl
(tee_local $2
(current_memory)
(call $~lib/memory/memory.size)
)
(i32.const 16)
)
)
(if
(i32.lt_s
(grow_memory
(call $~lib/memory/memory.grow
(select
(get_local $2)
(tee_local $3
@ -81,7 +89,7 @@
)
(if
(i32.lt_s
(grow_memory
(call $~lib/memory/memory.grow
(get_local $3)
)
(i32.const 0)
@ -100,7 +108,13 @@
)
(i32.const 0)
)
(func $~lib/memory/compare_memory (; 2 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(func $~lib/memory/memory.allocate (; 4 ;) (type $ii) (param $0 i32) (result i32)
(call $~lib/allocator/arena/__memory_allocate
(get_local $0)
)
)
(func $~lib/memory/memcmp (; 5 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(local $3 i32)
(if
(i32.eq
(get_local $0)
@ -112,8 +126,13 @@
)
(loop $continue|0
(if
(if (result i32)
(get_local $2)
(tee_local $3
(i32.ne
(get_local $2)
(i32.const 0)
)
)
(set_local $3
(i32.eq
(i32.load8_u
(get_local $0)
@ -122,8 +141,10 @@
(get_local $1)
)
)
(get_local $2)
)
)
(if
(get_local $3)
(block
(set_local $2
(i32.sub
@ -162,7 +183,14 @@
)
)
)
(func $~lib/string/String.__eq (; 3 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(func $~lib/memory/memory.compare (; 6 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(call $~lib/memory/memcmp
(get_local $0)
(get_local $1)
(get_local $2)
)
)
(func $~lib/string/String.__eq (; 7 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32)
(if
(i32.eq
@ -209,7 +237,7 @@
)
)
(i32.eqz
(call $~lib/memory/compare_memory
(call $~lib/memory/memory.compare
(i32.add
(get_local $0)
(i32.const 4)
@ -225,7 +253,7 @@
)
)
)
(func $object-literal/bar (; 4 ;) (type $iv) (param $0 i32)
(func $object-literal/bar (; 8 ;) (type $iv) (param $0 i32)
(if
(i32.ne
(i32.load
@ -263,7 +291,7 @@
)
)
)
(func $object-literal/bar2 (; 5 ;) (type $iv) (param $0 i32)
(func $object-literal/bar2 (; 9 ;) (type $iv) (param $0 i32)
(if
(i32.ne
(i32.load
@ -282,7 +310,7 @@
)
)
)
(func $object-literal/Foo2#test (; 6 ;) (type $iv) (param $0 i32)
(func $object-literal/Foo2#test (; 10 ;) (type $iv) (param $0 i32)
(if
(i32.ne
(i32.load
@ -301,23 +329,17 @@
)
)
)
(func $start (; 7 ;) (type $v)
(func $start (; 11 ;) (type $v)
(local $0 i32)
(set_global $~lib/allocator/arena/startOffset
(i32.and
(i32.add
(get_global $HEAP_BASE)
(i32.const 7)
)
(i32.const -8)
)
(i32.const 80)
)
(set_global $~lib/allocator/arena/offset
(get_global $~lib/allocator/arena/startOffset)
)
(i32.store
(tee_local $0
(call $~lib/allocator/arena/allocate_memory
(call $~lib/memory/memory.allocate
(i32.const 8)
)
)
@ -332,7 +354,7 @@
)
(i32.store
(tee_local $0
(call $~lib/allocator/arena/allocate_memory
(call $~lib/memory/memory.allocate
(i32.const 4)
)
)
@ -343,7 +365,7 @@
)
(i32.store
(tee_local $0
(call $~lib/allocator/arena/allocate_memory
(call $~lib/memory/memory.allocate
(i32.const 4)
)
)

View File

@ -1,5 +1,6 @@
(module
(type $ii (func (param i32) (result i32)))
(type $i (func (result i32)))
(type $iv (func (param i32)))
(type $iiiiv (func (param i32 i32 i32 i32)))
(type $iii (func (param i32 i32) (result i32)))
@ -19,7 +20,15 @@
(data (i32.const 36) "\11\00\00\00o\00b\00j\00e\00c\00t\00-\00l\00i\00t\00e\00r\00a\00l\00.\00t\00s\00")
(export "memory" (memory $0))
(start $start)
(func $~lib/allocator/arena/allocate_memory (; 1 ;) (type $ii) (param $0 i32) (result i32)
(func $~lib/memory/memory.size (; 1 ;) (type $i) (result i32)
(current_memory)
)
(func $~lib/memory/memory.grow (; 2 ;) (type $ii) (param $0 i32) (result i32)
(grow_memory
(get_local $0)
)
)
(func $~lib/allocator/arena/__memory_allocate (; 3 ;) (type $ii) (param $0 i32) (result i32)
(local $1 i32)
(local $2 i32)
(local $3 i32)
@ -32,7 +41,7 @@
(if
(i32.gt_u
(get_local $0)
(i32.const 1073741824)
(get_global $~lib/internal/allocator/MAX_SIZE_32)
)
(unreachable)
)
@ -46,16 +55,16 @@
(get_local $1)
(get_local $0)
)
(i32.const 7)
(get_global $~lib/internal/allocator/AL_MASK)
)
(i32.xor
(i32.const 7)
(get_global $~lib/internal/allocator/AL_MASK)
(i32.const -1)
)
)
)
(set_local $3
(current_memory)
(call $~lib/memory/memory.size)
)
(if
(i32.gt_u
@ -100,14 +109,14 @@
)
(if
(i32.lt_s
(grow_memory
(call $~lib/memory/memory.grow
(get_local $5)
)
(i32.const 0)
)
(if
(i32.lt_s
(grow_memory
(call $~lib/memory/memory.grow
(get_local $4)
)
(i32.const 0)
@ -127,7 +136,15 @@
)
(i32.const 0)
)
(func $~lib/memory/compare_memory (; 2 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(func $~lib/memory/memory.allocate (; 4 ;) (type $ii) (param $0 i32) (result i32)
(return
(call $~lib/allocator/arena/__memory_allocate
(get_local $0)
)
)
)
(func $~lib/memory/memcmp (; 5 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(local $3 i32)
(if
(i32.eq
(get_local $0)
@ -141,7 +158,12 @@
(loop $continue|0
(if
(if (result i32)
(get_local $2)
(tee_local $3
(i32.ne
(get_local $2)
(i32.const 0)
)
)
(i32.eq
(i32.load8_u
(get_local $0)
@ -150,7 +172,7 @@
(get_local $1)
)
)
(get_local $2)
(get_local $3)
)
(block
(block
@ -191,7 +213,14 @@
(i32.const 0)
)
)
(func $~lib/string/String.__eq (; 3 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(func $~lib/memory/memory.compare (; 6 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(call $~lib/memory/memcmp
(get_local $0)
(get_local $1)
(get_local $2)
)
)
(func $~lib/string/String.__eq (; 7 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32)
(local $3 i32)
(if
@ -238,14 +267,14 @@
)
)
(i32.eqz
(call $~lib/memory/compare_memory
(call $~lib/memory/memory.compare
(i32.add
(get_local $0)
(i32.const 4)
(get_global $~lib/internal/string/HEADER_SIZE)
)
(i32.add
(get_local $1)
(i32.const 4)
(get_global $~lib/internal/string/HEADER_SIZE)
)
(i32.shl
(get_local $3)
@ -254,7 +283,7 @@
)
)
)
(func $object-literal/bar (; 4 ;) (type $iv) (param $0 i32)
(func $object-literal/bar (; 8 ;) (type $iv) (param $0 i32)
(if
(i32.eqz
(i32.eq
@ -294,7 +323,7 @@
)
)
)
(func $object-literal/bar2 (; 5 ;) (type $iv) (param $0 i32)
(func $object-literal/bar2 (; 9 ;) (type $iv) (param $0 i32)
(if
(i32.eqz
(i32.eq
@ -315,7 +344,7 @@
)
)
)
(func $object-literal/Foo2#test (; 6 ;) (type $iv) (param $0 i32)
(func $object-literal/Foo2#test (; 10 ;) (type $iv) (param $0 i32)
(if
(i32.eqz
(i32.eq
@ -336,7 +365,7 @@
)
)
)
(func $start (; 7 ;) (type $v)
(func $start (; 11 ;) (type $v)
(local $0 i32)
(local $1 i32)
(local $2 i32)
@ -344,10 +373,10 @@
(i32.and
(i32.add
(get_global $HEAP_BASE)
(i32.const 7)
(get_global $~lib/internal/allocator/AL_MASK)
)
(i32.xor
(i32.const 7)
(get_global $~lib/internal/allocator/AL_MASK)
(i32.const -1)
)
)
@ -358,7 +387,7 @@
(call $object-literal/bar
(block (result i32)
(set_local $0
(call $~lib/allocator/arena/allocate_memory
(call $~lib/memory/memory.allocate
(i32.const 8)
)
)
@ -376,7 +405,7 @@
(call $object-literal/bar2
(block (result i32)
(set_local $1
(call $~lib/allocator/arena/allocate_memory
(call $~lib/memory/memory.allocate
(i32.const 4)
)
)
@ -390,7 +419,7 @@
(call $object-literal/Foo2#test
(block (result i32)
(set_local $2
(call $~lib/allocator/arena/allocate_memory
(call $~lib/memory/memory.allocate
(i32.const 4)
)
)

View File

@ -1,8 +1,8 @@
(module
(type $ii (func (param i32) (result i32)))
(memory $0 0)
(export "fib" (func $recursive/fib))
(export "memory" (memory $0))
(export "fib" (func $recursive/fib))
(func $recursive/fib (; 0 ;) (type $ii) (param $0 i32) (result i32)
(if
(i32.le_s

View File

@ -2,8 +2,8 @@
(type $ii (func (param i32) (result i32)))
(global $HEAP_BASE i32 (i32.const 8))
(memory $0 0)
(export "fib" (func $recursive/fib))
(export "memory" (memory $0))
(export "fib" (func $recursive/fib))
(func $recursive/fib (; 0 ;) (type $ii) (param $0 i32) (result i32)
(if
(i32.le_s

View File

@ -5,6 +5,7 @@
(global $export/b i32 (i32.const 2))
(global $export/c i32 (i32.const 3))
(memory $0 0)
(export "memory" (memory $0))
(export "add" (func $export/add))
(export "renamed_sub" (func $export/sub))
(export "renamed_mul" (func $export/mul))
@ -15,7 +16,7 @@
(export "rerenamed_c" (global $export/c))
(export "renamed_add" (func $export/add))
(export "rerenamed_sub" (func $export/mul))
(export "memory" (memory $0))
(export "renamed_ns.two" (func $export/ns.two))
(start $start)
(func $export/add (; 0 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(i32.add
@ -35,7 +36,10 @@
(get_local $1)
)
)
(func $start (; 3 ;) (type $v)
(func $export/ns.two (; 3 ;) (type $v)
(nop)
)
(func $start (; 4 ;) (type $v)
(drop
(i32.add
(call $export/add

View File

@ -6,6 +6,7 @@
(global $export/c i32 (i32.const 3))
(global $HEAP_BASE i32 (i32.const 8))
(memory $0 0)
(export "memory" (memory $0))
(export "add" (func $export/add))
(export "renamed_sub" (func $export/sub))
(export "renamed_mul" (func $export/mul))
@ -16,7 +17,7 @@
(export "rerenamed_c" (global $export/c))
(export "renamed_add" (func $export/add))
(export "rerenamed_sub" (func $export/mul))
(export "memory" (memory $0))
(export "renamed_ns.two" (func $export/ns.two))
(start $start)
(func $export/add (; 0 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(i32.add

View File

@ -3,6 +3,15 @@
(type $iiiiv (func (param i32 i32 i32 i32)))
(type $v (func))
(import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32)))
(global $i8.MAX_VALUE i32 (i32.const 127))
(global $i8.MIN_VALUE i32 (i32.const -128))
(global $u8.MAX_VALUE i32 (i32.const 255))
(global $i16.MIN_VALUE i32 (i32.const -32768))
(global $i16.MAX_VALUE i32 (i32.const 32767))
(global $u16.MAX_VALUE i32 (i32.const 65535))
(global $i32.MAX_VALUE i32 (i32.const 2147483647))
(global $i32.MIN_VALUE i32 (i32.const -2147483648))
(global $u32.MAX_VALUE i32 (i32.const -1))
(global $retain-i32/si (mut i32) (i32.const 0))
(global $retain-i32/ui (mut i32) (i32.const 0))
(global $HEAP_BASE i32 (i32.const 40))
@ -464,106 +473,106 @@
(local $0 i32)
(call $retain-i32/test
(i32.const 0)
(i32.const 127)
(get_global $i8.MAX_VALUE)
)
(call $retain-i32/test
(i32.const 127)
(get_global $i8.MAX_VALUE)
(i32.const 0)
)
(call $retain-i32/test
(i32.const 1)
(i32.const 127)
(get_global $i8.MAX_VALUE)
)
(call $retain-i32/test
(i32.const 127)
(get_global $i8.MAX_VALUE)
(i32.const 1)
)
(call $retain-i32/test
(i32.const -1)
(i32.const 127)
(get_global $i8.MAX_VALUE)
)
(call $retain-i32/test
(i32.const 127)
(get_global $i8.MAX_VALUE)
(i32.const -1)
)
(call $retain-i32/test
(i32.const 0)
(i32.const -128)
(get_global $i8.MIN_VALUE)
)
(call $retain-i32/test
(i32.const -128)
(get_global $i8.MIN_VALUE)
(i32.const 0)
)
(call $retain-i32/test
(i32.const 1)
(i32.const -128)
(get_global $i8.MIN_VALUE)
)
(call $retain-i32/test
(i32.const -128)
(get_global $i8.MIN_VALUE)
(i32.const 1)
)
(call $retain-i32/test
(i32.const -1)
(i32.const -128)
(get_global $i8.MIN_VALUE)
)
(call $retain-i32/test
(i32.const -128)
(get_global $i8.MIN_VALUE)
(i32.const -1)
)
(call $retain-i32/test
(i32.const 127)
(i32.const 127)
(get_global $i8.MAX_VALUE)
(get_global $i8.MAX_VALUE)
)
(call $retain-i32/test
(i32.const -128)
(i32.const -128)
(get_global $i8.MIN_VALUE)
(get_global $i8.MIN_VALUE)
)
(call $retain-i32/test
(i32.const 127)
(i32.const -128)
(get_global $i8.MAX_VALUE)
(get_global $i8.MIN_VALUE)
)
(call $retain-i32/test
(i32.const -128)
(i32.const 127)
(get_global $i8.MIN_VALUE)
(get_global $i8.MAX_VALUE)
)
(call $retain-i32/test
(i32.const 0)
(i32.const 255)
(get_global $u8.MAX_VALUE)
)
(call $retain-i32/test
(i32.const 255)
(get_global $u8.MAX_VALUE)
(i32.const 0)
)
(call $retain-i32/test
(i32.const 1)
(i32.const 255)
(get_global $u8.MAX_VALUE)
)
(call $retain-i32/test
(i32.const 255)
(get_global $u8.MAX_VALUE)
(i32.const 1)
)
(call $retain-i32/test
(i32.const -1)
(i32.const 255)
(get_global $u8.MAX_VALUE)
)
(call $retain-i32/test
(i32.const 255)
(get_global $u8.MAX_VALUE)
(i32.const -1)
)
(call $retain-i32/test
(i32.const 255)
(i32.const 255)
(get_global $u8.MAX_VALUE)
(get_global $u8.MAX_VALUE)
)
(block $break|0
(set_local $0
(i32.const -128)
(get_global $i8.MIN_VALUE)
)
(loop $repeat|0
(br_if $break|0
(i32.eqz
(i32.le_s
(get_local $0)
(i32.const 255)
(get_global $u8.MAX_VALUE)
)
)
)
@ -581,39 +590,39 @@
(get_local $0)
)
(call $retain-i32/test
(i32.const -128)
(get_global $i8.MIN_VALUE)
(get_local $0)
)
(call $retain-i32/test
(i32.const 127)
(get_global $i8.MAX_VALUE)
(get_local $0)
)
(call $retain-i32/test
(i32.const 255)
(get_global $u8.MAX_VALUE)
(get_local $0)
)
(call $retain-i32/test
(i32.const -32768)
(get_global $i16.MIN_VALUE)
(get_local $0)
)
(call $retain-i32/test
(i32.const 32767)
(get_global $i16.MAX_VALUE)
(get_local $0)
)
(call $retain-i32/test
(i32.const 65535)
(get_global $u16.MAX_VALUE)
(get_local $0)
)
(call $retain-i32/test
(i32.const 2147483647)
(get_global $i32.MAX_VALUE)
(get_local $0)
)
(call $retain-i32/test
(i32.const -2147483648)
(get_global $i32.MIN_VALUE)
(get_local $0)
)
(call $retain-i32/test
(i32.const -1)
(get_global $u32.MAX_VALUE)
(get_local $0)
)
)

View File

@ -1,5 +1,6 @@
(module
(type $ii (func (param i32) (result i32)))
(type $i (func (result i32)))
(type $iiiiv (func (param i32 i32 i32 i32)))
(type $iiiv (func (param i32 i32 i32)))
(type $iiii (func (param i32 i32 i32) (result i32)))
@ -11,12 +12,19 @@
(global $std/allocator_arena/ptr1 (mut i32) (i32.const 0))
(global $std/allocator_arena/ptr2 (mut i32) (i32.const 0))
(global $std/allocator_arena/i (mut i32) (i32.const 0))
(global $HEAP_BASE i32 (i32.const 56))
(memory $0 1)
(data (i32.const 8) "\16\00\00\00s\00t\00d\00/\00a\00l\00l\00o\00c\00a\00t\00o\00r\00_\00a\00r\00e\00n\00a\00.\00t\00s")
(export "memory" (memory $0))
(start $start)
(func $~lib/allocator/arena/allocate_memory (; 1 ;) (type $ii) (param $0 i32) (result i32)
(func $~lib/memory/memory.size (; 1 ;) (type $i) (result i32)
(current_memory)
)
(func $~lib/memory/memory.grow (; 2 ;) (type $ii) (param $0 i32) (result i32)
(grow_memory
(get_local $0)
)
)
(func $~lib/allocator/arena/__memory_allocate (; 3 ;) (type $ii) (param $0 i32) (result i32)
(local $1 i32)
(local $2 i32)
(local $3 i32)
@ -48,14 +56,14 @@
)
(i32.shl
(tee_local $2
(current_memory)
(call $~lib/memory/memory.size)
)
(i32.const 16)
)
)
(if
(i32.lt_s
(grow_memory
(call $~lib/memory/memory.grow
(select
(get_local $2)
(tee_local $3
@ -83,7 +91,7 @@
)
(if
(i32.lt_s
(grow_memory
(call $~lib/memory/memory.grow
(get_local $3)
)
(i32.const 0)
@ -102,7 +110,12 @@
)
(i32.const 0)
)
(func $~lib/memory/set_memory (; 2 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32)
(func $~lib/memory/memory.allocate (; 4 ;) (type $ii) (param $0 i32) (result i32)
(call $~lib/allocator/arena/__memory_allocate
(get_local $0)
)
)
(func $~lib/memory/memset (; 5 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32)
(local $3 i32)
(local $4 i64)
(if
@ -432,7 +445,14 @@
)
)
)
(func $~lib/memory/copy_memory (; 3 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32)
(func $~lib/memory/memory.fill (; 6 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32)
(call $~lib/memory/memset
(get_local $0)
(get_local $1)
(get_local $2)
)
)
(func $~lib/memory/memcpy (; 7 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32)
(local $3 i32)
(local $4 i32)
(local $5 i32)
@ -1818,7 +1838,7 @@
)
)
)
(func $~lib/memory/move_memory (; 4 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32)
(func $~lib/memory/memmove (; 8 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32)
(local $3 i32)
(local $4 i32)
(if
@ -1853,7 +1873,7 @@
(if
(get_local $3)
(block
(call $~lib/memory/copy_memory
(call $~lib/memory/memcpy
(get_local $0)
(get_local $1)
(get_local $2)
@ -2110,7 +2130,15 @@
)
)
)
(func $~lib/memory/compare_memory (; 5 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(func $~lib/memory/memory.copy (; 9 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32)
(call $~lib/memory/memmove
(get_local $0)
(get_local $1)
(get_local $2)
)
)
(func $~lib/memory/memcmp (; 10 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(local $3 i32)
(if
(i32.eq
(get_local $0)
@ -2122,8 +2150,13 @@
)
(loop $continue|0
(if
(if (result i32)
(get_local $2)
(tee_local $3
(i32.ne
(get_local $2)
(i32.const 0)
)
)
(set_local $3
(i32.eq
(i32.load8_u
(get_local $0)
@ -2132,8 +2165,10 @@
(get_local $1)
)
)
(get_local $2)
)
)
(if
(get_local $3)
(block
(set_local $2
(i32.sub
@ -2172,34 +2207,43 @@
)
)
)
(func $~lib/allocator/arena/free_memory (; 6 ;) (type $iv) (param $0 i32)
(func $~lib/memory/memory.compare (; 11 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(call $~lib/memory/memcmp
(get_local $0)
(get_local $1)
(get_local $2)
)
)
(func $~lib/allocator/arena/__memory_free (; 12 ;) (type $iv) (param $0 i32)
(nop)
)
(func $~lib/allocator/arena/reset_memory (; 7 ;) (type $v)
(func $~lib/memory/memory.free (; 13 ;) (type $iv) (param $0 i32)
(call $~lib/allocator/arena/__memory_free
(get_local $0)
)
)
(func $~lib/allocator/arena/__memory_reset (; 14 ;) (type $v)
(set_global $~lib/allocator/arena/offset
(get_global $~lib/allocator/arena/startOffset)
)
)
(func $start (; 8 ;) (type $v)
(func $~lib/memory/memory.reset (; 15 ;) (type $v)
(call $~lib/allocator/arena/__memory_reset)
)
(func $start (; 16 ;) (type $v)
(set_global $~lib/allocator/arena/startOffset
(i32.and
(i32.add
(get_global $HEAP_BASE)
(i32.const 7)
)
(i32.const -8)
)
(i32.const 56)
)
(set_global $~lib/allocator/arena/offset
(get_global $~lib/allocator/arena/startOffset)
)
(set_global $std/allocator_arena/ptr1
(call $~lib/allocator/arena/allocate_memory
(call $~lib/memory/memory.allocate
(i32.const 42)
)
)
(set_global $std/allocator_arena/ptr2
(call $~lib/allocator/arena/allocate_memory
(call $~lib/memory/memory.allocate
(i32.const 42)
)
)
@ -2218,7 +2262,7 @@
(unreachable)
)
)
(call $~lib/memory/set_memory
(call $~lib/memory/memory.fill
(get_global $std/allocator_arena/ptr1)
(i32.const 18)
(i32.const 42)
@ -2248,8 +2292,8 @@
(call $~lib/env/abort
(i32.const 0)
(i32.const 8)
(i32.const 13)
(i32.const 2)
(i32.const 12)
(i32.const 27)
)
(unreachable)
)
@ -2265,7 +2309,7 @@
)
)
)
(call $~lib/memory/move_memory
(call $~lib/memory/memory.copy
(get_global $std/allocator_arena/ptr2)
(get_global $std/allocator_arena/ptr1)
(i32.const 42)
@ -2295,8 +2339,8 @@
(call $~lib/env/abort
(i32.const 0)
(i32.const 8)
(i32.const 18)
(i32.const 2)
(i32.const 16)
(i32.const 27)
)
(unreachable)
)
@ -2313,7 +2357,7 @@
)
)
(if
(call $~lib/memory/compare_memory
(call $~lib/memory/memory.compare
(get_global $std/allocator_arena/ptr1)
(get_global $std/allocator_arena/ptr2)
(i32.const 42)
@ -2322,40 +2366,34 @@
(call $~lib/env/abort
(i32.const 0)
(i32.const 8)
(i32.const 20)
(i32.const 18)
(i32.const 0)
)
(unreachable)
)
)
(call $~lib/allocator/arena/free_memory
(call $~lib/memory/memory.free
(get_global $std/allocator_arena/ptr1)
)
(call $~lib/allocator/arena/free_memory
(call $~lib/memory/memory.free
(get_global $std/allocator_arena/ptr2)
)
(call $~lib/allocator/arena/reset_memory)
(call $~lib/memory/memory.reset)
(set_global $std/allocator_arena/ptr1
(call $~lib/allocator/arena/allocate_memory
(call $~lib/memory/memory.allocate
(i32.const 42)
)
)
(if
(i32.ne
(get_global $std/allocator_arena/ptr1)
(i32.and
(i32.add
(get_global $HEAP_BASE)
(i32.const 7)
)
(i32.const -8)
)
(i32.const 56)
)
(block
(call $~lib/env/abort
(i32.const 0)
(i32.const 8)
(i32.const 27)
(i32.const 25)
(i32.const 0)
)
(unreachable)

View File

@ -1,27 +1,25 @@
import "allocator/arena";
const size: usize = 42;
let ptr1: usize = allocate_memory(size);
let ptr2: usize = allocate_memory(size);
var ptr1: usize = memory.allocate(size);
var ptr2: usize = memory.allocate(size);
assert(ptr1 != ptr2);
set_memory(ptr1, 0x12, size);
memory.fill(ptr1, 0x12, size);
let i: usize;
for (i = 0; i < size; ++i)
assert(load<u8>(ptr1 + i) == 0x12);
var i: usize;
for (i = 0; i < size; ++i) assert(load<u8>(ptr1 + i) == 0x12);
move_memory(ptr2, ptr1, size);
memory.copy(ptr2, ptr1, size);
for (i = 0; i < size; ++i)
assert(load<u8>(ptr2 + i) == 0x12);
for (i = 0; i < size; ++i) assert(load<u8>(ptr2 + i) == 0x12);
assert(compare_memory(ptr1, ptr2, size) == 0);
assert(memory.compare(ptr1, ptr2, size) == 0);
free_memory(ptr1);
free_memory(ptr2);
memory.free(ptr1);
memory.free(ptr2);
reset_memory();
ptr1 = allocate_memory(size);
memory.reset();
ptr1 = memory.allocate(size);
assert(ptr1 == ((HEAP_BASE + 7) & ~7));

View File

@ -1,5 +1,6 @@
(module
(type $ii (func (param i32) (result i32)))
(type $i (func (result i32)))
(type $iiiiv (func (param i32 i32 i32 i32)))
(type $iiiv (func (param i32 i32 i32)))
(type $iiii (func (param i32 i32 i32) (result i32)))
@ -21,7 +22,15 @@
(data (i32.const 8) "\16\00\00\00s\00t\00d\00/\00a\00l\00l\00o\00c\00a\00t\00o\00r\00_\00a\00r\00e\00n\00a\00.\00t\00s\00")
(export "memory" (memory $0))
(start $start)
(func $~lib/allocator/arena/allocate_memory (; 1 ;) (type $ii) (param $0 i32) (result i32)
(func $~lib/memory/memory.size (; 1 ;) (type $i) (result i32)
(current_memory)
)
(func $~lib/memory/memory.grow (; 2 ;) (type $ii) (param $0 i32) (result i32)
(grow_memory
(get_local $0)
)
)
(func $~lib/allocator/arena/__memory_allocate (; 3 ;) (type $ii) (param $0 i32) (result i32)
(local $1 i32)
(local $2 i32)
(local $3 i32)
@ -34,7 +43,7 @@
(if
(i32.gt_u
(get_local $0)
(i32.const 1073741824)
(get_global $~lib/internal/allocator/MAX_SIZE_32)
)
(unreachable)
)
@ -48,16 +57,16 @@
(get_local $1)
(get_local $0)
)
(i32.const 7)
(get_global $~lib/internal/allocator/AL_MASK)
)
(i32.xor
(i32.const 7)
(get_global $~lib/internal/allocator/AL_MASK)
(i32.const -1)
)
)
)
(set_local $3
(current_memory)
(call $~lib/memory/memory.size)
)
(if
(i32.gt_u
@ -102,14 +111,14 @@
)
(if
(i32.lt_s
(grow_memory
(call $~lib/memory/memory.grow
(get_local $5)
)
(i32.const 0)
)
(if
(i32.lt_s
(grow_memory
(call $~lib/memory/memory.grow
(get_local $4)
)
(i32.const 0)
@ -129,7 +138,14 @@
)
(i32.const 0)
)
(func $~lib/memory/set_memory (; 2 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32)
(func $~lib/memory/memory.allocate (; 4 ;) (type $ii) (param $0 i32) (result i32)
(return
(call $~lib/allocator/arena/__memory_allocate
(get_local $0)
)
)
)
(func $~lib/memory/memset (; 5 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32)
(local $3 i32)
(local $4 i32)
(local $5 i64)
@ -481,7 +497,14 @@
)
)
)
(func $~lib/memory/copy_memory (; 3 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32)
(func $~lib/memory/memory.fill (; 6 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32)
(call $~lib/memory/memset
(get_local $0)
(get_local $1)
(get_local $2)
)
)
(func $~lib/memory/memcpy (; 7 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32)
(local $3 i32)
(local $4 i32)
(local $5 i32)
@ -2283,7 +2306,7 @@
)
)
)
(func $~lib/memory/move_memory (; 4 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32)
(func $~lib/memory/memmove (; 8 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32)
(local $3 i32)
(if
(i32.eq
@ -2313,7 +2336,7 @@
)
)
(block
(call $~lib/memory/copy_memory
(call $~lib/memory/memcpy
(get_local $0)
(get_local $1)
(get_local $2)
@ -2601,7 +2624,15 @@
)
)
)
(func $~lib/memory/compare_memory (; 5 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(func $~lib/memory/memory.copy (; 9 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32)
(call $~lib/memory/memmove
(get_local $0)
(get_local $1)
(get_local $2)
)
)
(func $~lib/memory/memcmp (; 10 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(local $3 i32)
(if
(i32.eq
(get_local $0)
@ -2615,7 +2646,12 @@
(loop $continue|0
(if
(if (result i32)
(get_local $2)
(tee_local $3
(i32.ne
(get_local $2)
(i32.const 0)
)
)
(i32.eq
(i32.load8_u
(get_local $0)
@ -2624,7 +2660,7 @@
(get_local $1)
)
)
(get_local $2)
(get_local $3)
)
(block
(block
@ -2665,23 +2701,40 @@
(i32.const 0)
)
)
(func $~lib/allocator/arena/free_memory (; 6 ;) (type $iv) (param $0 i32)
(func $~lib/memory/memory.compare (; 11 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(call $~lib/memory/memcmp
(get_local $0)
(get_local $1)
(get_local $2)
)
)
(func $~lib/allocator/arena/__memory_free (; 12 ;) (type $iv) (param $0 i32)
(nop)
)
(func $~lib/allocator/arena/reset_memory (; 7 ;) (type $v)
(func $~lib/memory/memory.free (; 13 ;) (type $iv) (param $0 i32)
(call $~lib/allocator/arena/__memory_free
(get_local $0)
)
(return)
)
(func $~lib/allocator/arena/__memory_reset (; 14 ;) (type $v)
(set_global $~lib/allocator/arena/offset
(get_global $~lib/allocator/arena/startOffset)
)
)
(func $start (; 8 ;) (type $v)
(func $~lib/memory/memory.reset (; 15 ;) (type $v)
(call $~lib/allocator/arena/__memory_reset)
(return)
)
(func $start (; 16 ;) (type $v)
(set_global $~lib/allocator/arena/startOffset
(i32.and
(i32.add
(get_global $HEAP_BASE)
(i32.const 7)
(get_global $~lib/internal/allocator/AL_MASK)
)
(i32.xor
(i32.const 7)
(get_global $~lib/internal/allocator/AL_MASK)
(i32.const -1)
)
)
@ -2690,13 +2743,13 @@
(get_global $~lib/allocator/arena/startOffset)
)
(set_global $std/allocator_arena/ptr1
(call $~lib/allocator/arena/allocate_memory
(i32.const 42)
(call $~lib/memory/memory.allocate
(get_global $std/allocator_arena/size)
)
)
(set_global $std/allocator_arena/ptr2
(call $~lib/allocator/arena/allocate_memory
(i32.const 42)
(call $~lib/memory/memory.allocate
(get_global $std/allocator_arena/size)
)
)
(if
@ -2716,10 +2769,10 @@
(unreachable)
)
)
(call $~lib/memory/set_memory
(call $~lib/memory/memory.fill
(get_global $std/allocator_arena/ptr1)
(i32.const 18)
(i32.const 42)
(get_global $std/allocator_arena/size)
)
(block $break|0
(set_global $std/allocator_arena/i
@ -2730,7 +2783,7 @@
(i32.eqz
(i32.lt_u
(get_global $std/allocator_arena/i)
(i32.const 42)
(get_global $std/allocator_arena/size)
)
)
)
@ -2750,8 +2803,8 @@
(call $~lib/env/abort
(i32.const 0)
(i32.const 8)
(i32.const 13)
(i32.const 2)
(i32.const 12)
(i32.const 27)
)
(unreachable)
)
@ -2765,10 +2818,10 @@
(br $repeat|0)
)
)
(call $~lib/memory/move_memory
(call $~lib/memory/memory.copy
(get_global $std/allocator_arena/ptr2)
(get_global $std/allocator_arena/ptr1)
(i32.const 42)
(get_global $std/allocator_arena/size)
)
(block $break|1
(set_global $std/allocator_arena/i
@ -2779,7 +2832,7 @@
(i32.eqz
(i32.lt_u
(get_global $std/allocator_arena/i)
(i32.const 42)
(get_global $std/allocator_arena/size)
)
)
)
@ -2799,8 +2852,8 @@
(call $~lib/env/abort
(i32.const 0)
(i32.const 8)
(i32.const 18)
(i32.const 2)
(i32.const 16)
(i32.const 27)
)
(unreachable)
)
@ -2817,10 +2870,10 @@
(if
(i32.eqz
(i32.eq
(call $~lib/memory/compare_memory
(call $~lib/memory/memory.compare
(get_global $std/allocator_arena/ptr1)
(get_global $std/allocator_arena/ptr2)
(i32.const 42)
(get_global $std/allocator_arena/size)
)
(i32.const 0)
)
@ -2829,22 +2882,22 @@
(call $~lib/env/abort
(i32.const 0)
(i32.const 8)
(i32.const 20)
(i32.const 18)
(i32.const 0)
)
(unreachable)
)
)
(call $~lib/allocator/arena/free_memory
(call $~lib/memory/memory.free
(get_global $std/allocator_arena/ptr1)
)
(call $~lib/allocator/arena/free_memory
(call $~lib/memory/memory.free
(get_global $std/allocator_arena/ptr2)
)
(call $~lib/allocator/arena/reset_memory)
(call $~lib/memory/memory.reset)
(set_global $std/allocator_arena/ptr1
(call $~lib/allocator/arena/allocate_memory
(i32.const 42)
(call $~lib/memory/memory.allocate
(get_global $std/allocator_arena/size)
)
)
(if
@ -2867,7 +2920,7 @@
(call $~lib/env/abort
(i32.const 0)
(i32.const 8)
(i32.const 27)
(i32.const 25)
(i32.const 0)
)
(unreachable)

View File

@ -7,12 +7,12 @@
(memory $0 1)
(data (i32.const 12) "\0e\00\00\00~\00l\00i\00b\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s")
(data (i32.const 44) "\04\00\00\00n\00u\00l\00l")
(export "memory" (memory $0))
(export "i32ArrayArrayElementAccess" (func $std/array-access/i32ArrayArrayElementAccess))
(export "stringArrayPropertyAccess" (func $std/array-access/stringArrayPropertyAccess))
(export "stringArrayMethodCall" (func $std/array-access/stringArrayMethodCall))
(export "stringArrayArrayPropertyAccess" (func $std/array-access/stringArrayArrayPropertyAccess))
(export "stringArrayArrayMethodCall" (func $std/array-access/stringArrayArrayMethodCall))
(export "memory" (memory $0))
(func $~lib/array/Array<Array<i32>>#__get (; 1 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(tee_local $0
(if (result i32)
@ -59,7 +59,8 @@
)
)
)
(func $~lib/memory/compare_memory (; 4 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(func $~lib/memory/memcmp (; 4 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(local $3 i32)
(if
(i32.eq
(get_local $0)
@ -71,8 +72,13 @@
)
(loop $continue|0
(if
(if (result i32)
(get_local $2)
(tee_local $3
(i32.ne
(get_local $2)
(i32.const 0)
)
)
(set_local $3
(i32.eq
(i32.load8_u
(get_local $0)
@ -81,8 +87,10 @@
(get_local $1)
)
)
(get_local $2)
)
)
(if
(get_local $3)
(block
(set_local $2
(i32.sub
@ -121,7 +129,14 @@
)
)
)
(func $~lib/string/String#startsWith (; 5 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(func $~lib/memory/memory.compare (; 5 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(call $~lib/memory/memcmp
(get_local $0)
(get_local $1)
(get_local $2)
)
)
(func $~lib/string/String#startsWith (; 6 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(local $3 i32)
(local $4 i32)
(if
@ -185,7 +200,7 @@
)
)
(i32.eqz
(call $~lib/memory/compare_memory
(call $~lib/memory/memory.compare
(i32.add
(i32.add
(get_local $0)
@ -207,7 +222,7 @@
)
)
)
(func $std/array-access/stringArrayMethodCall (; 6 ;) (type $ii) (param $0 i32) (result i32)
(func $std/array-access/stringArrayMethodCall (; 7 ;) (type $ii) (param $0 i32) (result i32)
(call $~lib/string/String#startsWith
(call $~lib/array/Array<Array<i32>>#__get
(get_local $0)
@ -217,7 +232,7 @@
(i32.const 0)
)
)
(func $std/array-access/stringArrayArrayPropertyAccess (; 7 ;) (type $ii) (param $0 i32) (result i32)
(func $std/array-access/stringArrayArrayPropertyAccess (; 8 ;) (type $ii) (param $0 i32) (result i32)
(i32.load
(call $~lib/array/Array<Array<i32>>#__get
(call $~lib/array/Array<Array<i32>>#__get
@ -228,7 +243,7 @@
)
)
)
(func $std/array-access/stringArrayArrayMethodCall (; 8 ;) (type $ii) (param $0 i32) (result i32)
(func $std/array-access/stringArrayArrayMethodCall (; 9 ;) (type $ii) (param $0 i32) (result i32)
(call $~lib/string/String#startsWith
(call $~lib/array/Array<Array<i32>>#__get
(call $~lib/array/Array<Array<i32>>#__get

View File

@ -14,12 +14,12 @@
(data (i32.const 8) "\00\00\00\00")
(data (i32.const 12) "\0e\00\00\00~\00l\00i\00b\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s\00")
(data (i32.const 44) "\04\00\00\00n\00u\00l\00l\00")
(export "memory" (memory $0))
(export "i32ArrayArrayElementAccess" (func $std/array-access/i32ArrayArrayElementAccess))
(export "stringArrayPropertyAccess" (func $std/array-access/stringArrayPropertyAccess))
(export "stringArrayMethodCall" (func $std/array-access/stringArrayMethodCall))
(export "stringArrayArrayPropertyAccess" (func $std/array-access/stringArrayArrayPropertyAccess))
(export "stringArrayArrayMethodCall" (func $std/array-access/stringArrayArrayMethodCall))
(export "memory" (memory $0))
(func $~lib/array/Array<Array<i32>>#__get (; 1 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32)
(set_local $2
@ -130,7 +130,8 @@
)
)
)
(func $~lib/memory/compare_memory (; 6 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(func $~lib/memory/memcmp (; 6 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(local $3 i32)
(if
(i32.eq
(get_local $0)
@ -144,7 +145,12 @@
(loop $continue|0
(if
(if (result i32)
(get_local $2)
(tee_local $3
(i32.ne
(get_local $2)
(i32.const 0)
)
)
(i32.eq
(i32.load8_u
(get_local $0)
@ -153,7 +159,7 @@
(get_local $1)
)
)
(get_local $2)
(get_local $3)
)
(block
(block
@ -194,7 +200,14 @@
(i32.const 0)
)
)
(func $~lib/string/String#startsWith (; 7 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(func $~lib/memory/memory.compare (; 7 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(call $~lib/memory/memcmp
(get_local $0)
(get_local $1)
(get_local $2)
)
)
(func $~lib/string/String#startsWith (; 8 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(local $3 i32)
(local $4 i32)
(local $5 i32)
@ -284,11 +297,11 @@
)
)
(i32.eqz
(call $~lib/memory/compare_memory
(call $~lib/memory/memory.compare
(i32.add
(i32.add
(get_local $0)
(i32.const 4)
(get_global $~lib/internal/string/HEADER_SIZE)
)
(i32.shl
(get_local $8)
@ -297,7 +310,7 @@
)
(i32.add
(get_local $1)
(i32.const 4)
(get_global $~lib/internal/string/HEADER_SIZE)
)
(i32.shl
(get_local $9)
@ -306,7 +319,7 @@
)
)
)
(func $std/array-access/stringArrayMethodCall (; 8 ;) (type $ii) (param $0 i32) (result i32)
(func $std/array-access/stringArrayMethodCall (; 9 ;) (type $ii) (param $0 i32) (result i32)
(call $~lib/string/String#startsWith
(call $~lib/array/Array<String>#__get
(get_local $0)
@ -316,7 +329,7 @@
(i32.const 0)
)
)
(func $~lib/array/Array<Array<String>>#__get (; 9 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(func $~lib/array/Array<Array<String>>#__get (; 10 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32)
(set_local $2
(i32.load
@ -347,7 +360,7 @@
(unreachable)
)
)
(func $std/array-access/stringArrayArrayPropertyAccess (; 10 ;) (type $ii) (param $0 i32) (result i32)
(func $std/array-access/stringArrayArrayPropertyAccess (; 11 ;) (type $ii) (param $0 i32) (result i32)
(i32.load
(call $~lib/array/Array<String>#__get
(call $~lib/array/Array<Array<String>>#__get
@ -358,7 +371,7 @@
)
)
)
(func $std/array-access/stringArrayArrayMethodCall (; 11 ;) (type $ii) (param $0 i32) (result i32)
(func $std/array-access/stringArrayArrayMethodCall (; 12 ;) (type $ii) (param $0 i32) (result i32)
(call $~lib/string/String#startsWith
(call $~lib/array/Array<String>#__get
(call $~lib/array/Array<Array<String>>#__get

View File

@ -2,6 +2,7 @@
(type $ii (func (param i32) (result i32)))
(type $iiiiv (func (param i32 i32 i32 i32)))
(type $iii (func (param i32 i32) (result i32)))
(type $i (func (result i32)))
(type $iiiv (func (param i32 i32 i32)))
(type $v (func))
(import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32)))
@ -10,7 +11,6 @@
(global $std/array-literal/emptyArray (mut i32) (i32.const 0))
(global $std/array-literal/i (mut i32) (i32.const 0))
(global $std/array-literal/dynamicArray (mut i32) (i32.const 0))
(global $HEAP_BASE i32 (i32.const 184))
(memory $0 1)
(data (i32.const 8) "\10\00\00\00\03\00\00\00\0c")
(data (i32.const 28) "\01\00\00\00\02")
@ -67,7 +67,15 @@
)
)
)
(func $~lib/allocator/arena/allocate_memory (; 4 ;) (type $ii) (param $0 i32) (result i32)
(func $~lib/memory/memory.size (; 4 ;) (type $i) (result i32)
(current_memory)
)
(func $~lib/memory/memory.grow (; 5 ;) (type $ii) (param $0 i32) (result i32)
(grow_memory
(get_local $0)
)
)
(func $~lib/allocator/arena/__memory_allocate (; 6 ;) (type $ii) (param $0 i32) (result i32)
(local $1 i32)
(local $2 i32)
(local $3 i32)
@ -99,14 +107,14 @@
)
(i32.shl
(tee_local $2
(current_memory)
(call $~lib/memory/memory.size)
)
(i32.const 16)
)
)
(if
(i32.lt_s
(grow_memory
(call $~lib/memory/memory.grow
(select
(get_local $2)
(tee_local $3
@ -134,7 +142,7 @@
)
(if
(i32.lt_s
(grow_memory
(call $~lib/memory/memory.grow
(get_local $3)
)
(i32.const 0)
@ -153,7 +161,12 @@
)
(i32.const 0)
)
(func $~lib/internal/arraybuffer/allocUnsafe (; 5 ;) (type $ii) (param $0 i32) (result i32)
(func $~lib/memory/memory.allocate (; 7 ;) (type $ii) (param $0 i32) (result i32)
(call $~lib/allocator/arena/__memory_allocate
(get_local $0)
)
)
(func $~lib/internal/arraybuffer/allocUnsafe (; 8 ;) (type $ii) (param $0 i32) (result i32)
(local $1 i32)
(if
(i32.gt_u
@ -172,7 +185,7 @@
)
(i32.store
(tee_local $1
(call $~lib/allocator/arena/allocate_memory
(call $~lib/memory/memory.allocate
(call $~lib/internal/arraybuffer/computeSize
(get_local $0)
)
@ -182,7 +195,7 @@
)
(get_local $1)
)
(func $~lib/memory/set_memory (; 6 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32)
(func $~lib/memory/memset (; 9 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32)
(local $3 i32)
(local $4 i64)
(if
@ -512,7 +525,14 @@
)
)
)
(func $~lib/array/Array<i32>#constructor (; 7 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(func $~lib/memory/memory.fill (; 10 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32)
(call $~lib/memory/memset
(get_local $0)
(get_local $1)
(get_local $2)
)
)
(func $~lib/array/Array<i32>#constructor (; 11 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32)
(local $3 i32)
(if
@ -547,7 +567,7 @@
(block
(i32.store
(tee_local $0
(call $~lib/allocator/arena/allocate_memory
(call $~lib/memory/memory.allocate
(i32.const 8)
)
)
@ -567,7 +587,7 @@
(get_local $0)
(get_local $1)
)
(call $~lib/memory/set_memory
(call $~lib/memory/memory.fill
(i32.add
(get_local $2)
(i32.const 8)
@ -577,7 +597,7 @@
)
(get_local $0)
)
(func $~lib/array/Array<i32>#__unchecked_set (; 8 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32)
(func $~lib/array/Array<i32>#__unchecked_set (; 12 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32)
(i32.store offset=8
(i32.add
(i32.load
@ -591,16 +611,10 @@
(get_local $2)
)
)
(func $start (; 9 ;) (type $v)
(func $start (; 13 ;) (type $v)
(local $0 i32)
(set_global $~lib/allocator/arena/startOffset
(i32.and
(i32.add
(get_global $HEAP_BASE)
(i32.const 7)
)
(i32.const -8)
)
(i32.const 184)
)
(set_global $~lib/allocator/arena/offset
(get_global $~lib/allocator/arena/startOffset)

View File

@ -2,6 +2,7 @@
(type $ii (func (param i32) (result i32)))
(type $iiiiv (func (param i32 i32 i32 i32)))
(type $iii (func (param i32 i32) (result i32)))
(type $i (func (result i32)))
(type $iiiv (func (param i32 i32 i32)))
(type $v (func))
(import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32)))
@ -70,7 +71,7 @@
(i32.sub
(i32.add
(get_local $0)
(i32.const 8)
(get_global $~lib/internal/arraybuffer/HEADER_SIZE)
)
(i32.const 1)
)
@ -78,7 +79,15 @@
)
)
)
(func $~lib/allocator/arena/allocate_memory (; 4 ;) (type $ii) (param $0 i32) (result i32)
(func $~lib/memory/memory.size (; 4 ;) (type $i) (result i32)
(current_memory)
)
(func $~lib/memory/memory.grow (; 5 ;) (type $ii) (param $0 i32) (result i32)
(grow_memory
(get_local $0)
)
)
(func $~lib/allocator/arena/__memory_allocate (; 6 ;) (type $ii) (param $0 i32) (result i32)
(local $1 i32)
(local $2 i32)
(local $3 i32)
@ -91,7 +100,7 @@
(if
(i32.gt_u
(get_local $0)
(i32.const 1073741824)
(get_global $~lib/internal/allocator/MAX_SIZE_32)
)
(unreachable)
)
@ -105,16 +114,16 @@
(get_local $1)
(get_local $0)
)
(i32.const 7)
(get_global $~lib/internal/allocator/AL_MASK)
)
(i32.xor
(i32.const 7)
(get_global $~lib/internal/allocator/AL_MASK)
(i32.const -1)
)
)
)
(set_local $3
(current_memory)
(call $~lib/memory/memory.size)
)
(if
(i32.gt_u
@ -159,14 +168,14 @@
)
(if
(i32.lt_s
(grow_memory
(call $~lib/memory/memory.grow
(get_local $5)
)
(i32.const 0)
)
(if
(i32.lt_s
(grow_memory
(call $~lib/memory/memory.grow
(get_local $4)
)
(i32.const 0)
@ -186,13 +195,20 @@
)
(i32.const 0)
)
(func $~lib/internal/arraybuffer/allocUnsafe (; 5 ;) (type $ii) (param $0 i32) (result i32)
(func $~lib/memory/memory.allocate (; 7 ;) (type $ii) (param $0 i32) (result i32)
(return
(call $~lib/allocator/arena/__memory_allocate
(get_local $0)
)
)
)
(func $~lib/internal/arraybuffer/allocUnsafe (; 8 ;) (type $ii) (param $0 i32) (result i32)
(local $1 i32)
(if
(i32.eqz
(i32.le_u
(get_local $0)
(i32.const 1073741816)
(get_global $~lib/internal/arraybuffer/MAX_BLENGTH)
)
)
(block
@ -206,7 +222,7 @@
)
)
(set_local $1
(call $~lib/allocator/arena/allocate_memory
(call $~lib/memory/memory.allocate
(call $~lib/internal/arraybuffer/computeSize
(get_local $0)
)
@ -218,7 +234,7 @@
)
(get_local $1)
)
(func $~lib/memory/set_memory (; 6 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32)
(func $~lib/memory/memset (; 9 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32)
(local $3 i32)
(local $4 i32)
(local $5 i64)
@ -570,7 +586,14 @@
)
)
)
(func $~lib/array/Array<i32>#constructor (; 7 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(func $~lib/memory/memory.fill (; 10 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32)
(call $~lib/memory/memset
(get_local $0)
(get_local $1)
(get_local $2)
)
)
(func $~lib/array/Array<i32>#constructor (; 11 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32)
(local $3 i32)
(local $4 i32)
@ -608,7 +631,7 @@
(tee_local $0
(block (result i32)
(set_local $4
(call $~lib/allocator/arena/allocate_memory
(call $~lib/memory/memory.allocate
(i32.const 8)
)
)
@ -631,17 +654,17 @@
(get_local $0)
(get_local $1)
)
(call $~lib/memory/set_memory
(call $~lib/memory/memory.fill
(i32.add
(get_local $3)
(i32.const 8)
(get_global $~lib/internal/arraybuffer/HEADER_SIZE)
)
(i32.const 0)
(get_local $2)
)
(get_local $0)
)
(func $~lib/array/Array<i32>#__unchecked_set (; 8 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32)
(func $~lib/array/Array<i32>#__unchecked_set (; 12 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32)
(local $3 i32)
(block $~lib/internal/arraybuffer/storeUnsafe<i32,i32>|inlined.0
(set_local $3
@ -661,16 +684,16 @@
)
)
)
(func $start (; 9 ;) (type $v)
(func $start (; 13 ;) (type $v)
(local $0 i32)
(set_global $~lib/allocator/arena/startOffset
(i32.and
(i32.add
(get_global $HEAP_BASE)
(i32.const 7)
(get_global $~lib/internal/allocator/AL_MASK)
)
(i32.xor
(i32.const 7)
(get_global $~lib/internal/allocator/AL_MASK)
(i32.const -1)
)
)
@ -682,7 +705,7 @@
(i32.eqz
(i32.eq
(call $~lib/array/Array<i32>#get:length
(i32.const 8)
(get_global $std/array-literal/staticArray)
)
(i32.const 3)
)
@ -701,7 +724,7 @@
(i32.eqz
(i32.eq
(call $~lib/array/Array<i32>#__get
(i32.const 8)
(get_global $std/array-literal/staticArray)
(i32.const 0)
)
(i32.const 0)
@ -721,7 +744,7 @@
(i32.eqz
(i32.eq
(call $~lib/array/Array<i32>#__get
(i32.const 8)
(get_global $std/array-literal/staticArray)
(i32.const 1)
)
(i32.const 1)
@ -741,7 +764,7 @@
(i32.eqz
(i32.eq
(call $~lib/array/Array<i32>#__get
(i32.const 8)
(get_global $std/array-literal/staticArray)
(i32.const 2)
)
(i32.const 2)

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -2,6 +2,7 @@
(type $iiii (func (param i32 i32 i32) (result i32)))
(type $iiiiv (func (param i32 i32 i32 i32)))
(type $ii (func (param i32) (result i32)))
(type $i (func (result i32)))
(type $iiiv (func (param i32 i32 i32)))
(type $v (func))
(import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32)))
@ -10,7 +11,6 @@
(global $std/arraybuffer/buffer (mut i32) (i32.const 0))
(global $~argc (mut i32) (i32.const 0))
(global $std/arraybuffer/sliced (mut i32) (i32.const 0))
(global $HEAP_BASE i32 (i32.const 152))
(memory $0 1)
(data (i32.const 8) "\13\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s")
(data (i32.const 52) "\1c\00\00\00~\00l\00i\00b\00/\00i\00n\00t\00e\00r\00n\00a\00l\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s")
@ -31,7 +31,15 @@
)
)
)
(func $~lib/allocator/arena/allocate_memory (; 2 ;) (type $ii) (param $0 i32) (result i32)
(func $~lib/memory/memory.size (; 2 ;) (type $i) (result i32)
(current_memory)
)
(func $~lib/memory/memory.grow (; 3 ;) (type $ii) (param $0 i32) (result i32)
(grow_memory
(get_local $0)
)
)
(func $~lib/allocator/arena/__memory_allocate (; 4 ;) (type $ii) (param $0 i32) (result i32)
(local $1 i32)
(local $2 i32)
(local $3 i32)
@ -63,14 +71,14 @@
)
(i32.shl
(tee_local $2
(current_memory)
(call $~lib/memory/memory.size)
)
(i32.const 16)
)
)
(if
(i32.lt_s
(grow_memory
(call $~lib/memory/memory.grow
(select
(get_local $2)
(tee_local $3
@ -98,7 +106,7 @@
)
(if
(i32.lt_s
(grow_memory
(call $~lib/memory/memory.grow
(get_local $3)
)
(i32.const 0)
@ -117,7 +125,12 @@
)
(i32.const 0)
)
(func $~lib/internal/arraybuffer/allocUnsafe (; 3 ;) (type $ii) (param $0 i32) (result i32)
(func $~lib/memory/memory.allocate (; 5 ;) (type $ii) (param $0 i32) (result i32)
(call $~lib/allocator/arena/__memory_allocate
(get_local $0)
)
)
(func $~lib/internal/arraybuffer/allocUnsafe (; 6 ;) (type $ii) (param $0 i32) (result i32)
(local $1 i32)
(if
(i32.gt_u
@ -136,7 +149,7 @@
)
(i32.store
(tee_local $1
(call $~lib/allocator/arena/allocate_memory
(call $~lib/memory/memory.allocate
(call $~lib/internal/arraybuffer/computeSize
(get_local $0)
)
@ -146,7 +159,7 @@
)
(get_local $1)
)
(func $~lib/memory/set_memory (; 4 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32)
(func $~lib/memory/memset (; 7 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32)
(local $3 i32)
(local $4 i64)
(if
@ -476,7 +489,14 @@
)
)
)
(func $~lib/arraybuffer/ArrayBuffer#constructor (; 5 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(func $~lib/memory/memory.fill (; 8 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32)
(call $~lib/memory/memset
(get_local $0)
(get_local $1)
(get_local $2)
)
)
(func $~lib/arraybuffer/ArrayBuffer#constructor (; 9 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(local $3 i32)
(if
(i32.gt_u
@ -505,7 +525,7 @@
(i32.const 1)
)
)
(call $~lib/memory/set_memory
(call $~lib/memory/memory.fill
(i32.add
(get_local $3)
(i32.const 8)
@ -516,7 +536,7 @@
)
(get_local $3)
)
(func $~lib/memory/copy_memory (; 6 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32)
(func $~lib/memory/memcpy (; 10 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32)
(local $3 i32)
(local $4 i32)
(local $5 i32)
@ -1902,7 +1922,7 @@
)
)
)
(func $~lib/memory/move_memory (; 7 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32)
(func $~lib/memory/memmove (; 11 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32)
(local $3 i32)
(local $4 i32)
(if
@ -1937,7 +1957,7 @@
(if
(get_local $3)
(block
(call $~lib/memory/copy_memory
(call $~lib/memory/memcpy
(get_local $0)
(get_local $1)
(get_local $2)
@ -2194,7 +2214,14 @@
)
)
)
(func $~lib/arraybuffer/ArrayBuffer#slice (; 8 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(func $~lib/memory/memory.copy (; 12 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32)
(call $~lib/memory/memmove
(get_local $0)
(get_local $1)
(get_local $2)
)
)
(func $~lib/arraybuffer/ArrayBuffer#slice (; 13 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(local $3 i32)
(local $4 i32)
(set_local $4
@ -2233,7 +2260,7 @@
)
)
)
(call $~lib/memory/move_memory
(call $~lib/memory/memory.copy
(i32.add
(tee_local $2
(call $~lib/internal/arraybuffer/allocUnsafe
@ -2297,12 +2324,12 @@
)
(get_local $2)
)
(func $~lib/arraybuffer/ArrayBuffer#slice|trampoline (; 9 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(func $~lib/arraybuffer/ArrayBuffer#slice|trampoline (; 14 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(block $2of2
(block $1of2
(block $0of2
(block $oob
(br_table $0of2 $1of2 $2of2 $oob
(block $outOfRange
(br_table $0of2 $1of2 $2of2 $outOfRange
(get_global $~argc)
)
)
@ -2322,15 +2349,9 @@
(get_local $2)
)
)
(func $start (; 10 ;) (type $v)
(func $start (; 15 ;) (type $v)
(set_global $~lib/allocator/arena/startOffset
(i32.and
(i32.add
(get_global $HEAP_BASE)
(i32.const 7)
)
(i32.const -8)
)
(i32.const 152)
)
(set_global $~lib/allocator/arena/offset
(get_global $~lib/allocator/arena/startOffset)

View File

@ -2,6 +2,7 @@
(type $iiii (func (param i32 i32 i32) (result i32)))
(type $iiiiv (func (param i32 i32 i32 i32)))
(type $ii (func (param i32) (result i32)))
(type $i (func (result i32)))
(type $iiiv (func (param i32 i32 i32)))
(type $v (func))
(import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32)))
@ -32,7 +33,7 @@
(i32.sub
(i32.add
(get_local $0)
(i32.const 8)
(get_global $~lib/internal/arraybuffer/HEADER_SIZE)
)
(i32.const 1)
)
@ -40,7 +41,15 @@
)
)
)
(func $~lib/allocator/arena/allocate_memory (; 2 ;) (type $ii) (param $0 i32) (result i32)
(func $~lib/memory/memory.size (; 2 ;) (type $i) (result i32)
(current_memory)
)
(func $~lib/memory/memory.grow (; 3 ;) (type $ii) (param $0 i32) (result i32)
(grow_memory
(get_local $0)
)
)
(func $~lib/allocator/arena/__memory_allocate (; 4 ;) (type $ii) (param $0 i32) (result i32)
(local $1 i32)
(local $2 i32)
(local $3 i32)
@ -53,7 +62,7 @@
(if
(i32.gt_u
(get_local $0)
(i32.const 1073741824)
(get_global $~lib/internal/allocator/MAX_SIZE_32)
)
(unreachable)
)
@ -67,16 +76,16 @@
(get_local $1)
(get_local $0)
)
(i32.const 7)
(get_global $~lib/internal/allocator/AL_MASK)
)
(i32.xor
(i32.const 7)
(get_global $~lib/internal/allocator/AL_MASK)
(i32.const -1)
)
)
)
(set_local $3
(current_memory)
(call $~lib/memory/memory.size)
)
(if
(i32.gt_u
@ -121,14 +130,14 @@
)
(if
(i32.lt_s
(grow_memory
(call $~lib/memory/memory.grow
(get_local $5)
)
(i32.const 0)
)
(if
(i32.lt_s
(grow_memory
(call $~lib/memory/memory.grow
(get_local $4)
)
(i32.const 0)
@ -148,13 +157,20 @@
)
(i32.const 0)
)
(func $~lib/internal/arraybuffer/allocUnsafe (; 3 ;) (type $ii) (param $0 i32) (result i32)
(func $~lib/memory/memory.allocate (; 5 ;) (type $ii) (param $0 i32) (result i32)
(return
(call $~lib/allocator/arena/__memory_allocate
(get_local $0)
)
)
)
(func $~lib/internal/arraybuffer/allocUnsafe (; 6 ;) (type $ii) (param $0 i32) (result i32)
(local $1 i32)
(if
(i32.eqz
(i32.le_u
(get_local $0)
(i32.const 1073741816)
(get_global $~lib/internal/arraybuffer/MAX_BLENGTH)
)
)
(block
@ -168,7 +184,7 @@
)
)
(set_local $1
(call $~lib/allocator/arena/allocate_memory
(call $~lib/memory/memory.allocate
(call $~lib/internal/arraybuffer/computeSize
(get_local $0)
)
@ -180,7 +196,7 @@
)
(get_local $1)
)
(func $~lib/memory/set_memory (; 4 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32)
(func $~lib/memory/memset (; 7 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32)
(local $3 i32)
(local $4 i32)
(local $5 i64)
@ -532,12 +548,19 @@
)
)
)
(func $~lib/arraybuffer/ArrayBuffer#constructor (; 5 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(func $~lib/memory/memory.fill (; 8 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32)
(call $~lib/memory/memset
(get_local $0)
(get_local $1)
(get_local $2)
)
)
(func $~lib/arraybuffer/ArrayBuffer#constructor (; 9 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(local $3 i32)
(if
(i32.gt_u
(get_local $1)
(i32.const 1073741816)
(get_global $~lib/internal/arraybuffer/MAX_BLENGTH)
)
(block
(call $~lib/env/abort
@ -561,10 +584,10 @@
(i32.const 1)
)
)
(call $~lib/memory/set_memory
(call $~lib/memory/memory.fill
(i32.add
(get_local $3)
(i32.const 8)
(get_global $~lib/internal/arraybuffer/HEADER_SIZE)
)
(i32.const 0)
(get_local $1)
@ -572,7 +595,7 @@
)
(get_local $3)
)
(func $~lib/memory/copy_memory (; 6 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32)
(func $~lib/memory/memcpy (; 10 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32)
(local $3 i32)
(local $4 i32)
(local $5 i32)
@ -2374,7 +2397,7 @@
)
)
)
(func $~lib/memory/move_memory (; 7 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32)
(func $~lib/memory/memmove (; 11 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32)
(local $3 i32)
(if
(i32.eq
@ -2404,7 +2427,7 @@
)
)
(block
(call $~lib/memory/copy_memory
(call $~lib/memory/memcpy
(get_local $0)
(get_local $1)
(get_local $2)
@ -2692,7 +2715,14 @@
)
)
)
(func $~lib/arraybuffer/ArrayBuffer#slice (; 8 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(func $~lib/memory/memory.copy (; 12 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32)
(call $~lib/memory/memmove
(get_local $0)
(get_local $1)
(get_local $2)
)
)
(func $~lib/arraybuffer/ArrayBuffer#slice (; 13 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(local $3 i32)
(local $4 i32)
(local $5 i32)
@ -2799,15 +2829,15 @@
(get_local $6)
)
)
(call $~lib/memory/move_memory
(call $~lib/memory/memory.copy
(i32.add
(get_local $7)
(i32.const 8)
(get_global $~lib/internal/arraybuffer/HEADER_SIZE)
)
(i32.add
(i32.add
(get_local $0)
(i32.const 8)
(get_global $~lib/internal/arraybuffer/HEADER_SIZE)
)
(get_local $1)
)
@ -2815,12 +2845,12 @@
)
(get_local $7)
)
(func $~lib/arraybuffer/ArrayBuffer#slice|trampoline (; 9 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(func $~lib/arraybuffer/ArrayBuffer#slice|trampoline (; 14 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(block $2of2
(block $1of2
(block $0of2
(block $oob
(br_table $0of2 $1of2 $2of2 $oob
(block $outOfRange
(br_table $0of2 $1of2 $2of2 $outOfRange
(get_global $~argc)
)
)
@ -2831,7 +2861,7 @@
)
)
(set_local $2
(i32.const 1073741816)
(get_global $~lib/internal/arraybuffer/MAX_BLENGTH)
)
)
(call $~lib/arraybuffer/ArrayBuffer#slice
@ -2840,15 +2870,15 @@
(get_local $2)
)
)
(func $start (; 10 ;) (type $v)
(func $start (; 15 ;) (type $v)
(set_global $~lib/allocator/arena/startOffset
(i32.and
(i32.add
(get_global $HEAP_BASE)
(i32.const 7)
(get_global $~lib/internal/allocator/AL_MASK)
)
(i32.xor
(i32.const 7)
(get_global $~lib/internal/allocator/AL_MASK)
(i32.const -1)
)
)

View File

@ -1,5 +1,6 @@
(module
(type $ii (func (param i32) (result i32)))
(type $i (func (result i32)))
(type $v (func))
(global $~lib/allocator/arena/startOffset (mut i32) (i32.const 0))
(global $~lib/allocator/arena/offset (mut i32) (i32.const 0))
@ -14,11 +15,18 @@
(global $std/constructor/ctorConditionallyReturns (mut i32) (i32.const 0))
(global $std/constructor/ctorAllocates (mut i32) (i32.const 0))
(global $std/constructor/ctorConditionallyAllocates (mut i32) (i32.const 0))
(global $HEAP_BASE i32 (i32.const 8))
(memory $0 0)
(export "memory" (memory $0))
(start $start)
(func $~lib/allocator/arena/allocate_memory (; 0 ;) (type $ii) (param $0 i32) (result i32)
(func $~lib/memory/memory.size (; 0 ;) (type $i) (result i32)
(current_memory)
)
(func $~lib/memory/memory.grow (; 1 ;) (type $ii) (param $0 i32) (result i32)
(grow_memory
(get_local $0)
)
)
(func $~lib/allocator/arena/__memory_allocate (; 2 ;) (type $ii) (param $0 i32) (result i32)
(local $1 i32)
(local $2 i32)
(local $3 i32)
@ -50,14 +58,14 @@
)
(i32.shl
(tee_local $2
(current_memory)
(call $~lib/memory/memory.size)
)
(i32.const 16)
)
)
(if
(i32.lt_s
(grow_memory
(call $~lib/memory/memory.grow
(select
(get_local $2)
(tee_local $3
@ -85,7 +93,7 @@
)
(if
(i32.lt_s
(grow_memory
(call $~lib/memory/memory.grow
(get_local $3)
)
(i32.const 0)
@ -104,23 +112,28 @@
)
(i32.const 0)
)
(func $std/constructor/EmptyCtor#constructor (; 1 ;) (type $ii) (param $0 i32) (result i32)
(func $~lib/memory/memory.allocate (; 3 ;) (type $ii) (param $0 i32) (result i32)
(call $~lib/allocator/arena/__memory_allocate
(get_local $0)
)
)
(func $std/constructor/EmptyCtor#constructor (; 4 ;) (type $ii) (param $0 i32) (result i32)
(if (result i32)
(get_local $0)
(get_local $0)
(call $~lib/allocator/arena/allocate_memory
(call $~lib/memory/memory.allocate
(i32.const 0)
)
)
)
(func $std/constructor/EmptyCtorWithFieldInit#constructor (; 2 ;) (type $ii) (param $0 i32) (result i32)
(func $std/constructor/EmptyCtorWithFieldInit#constructor (; 5 ;) (type $ii) (param $0 i32) (result i32)
(if
(i32.eqz
(get_local $0)
)
(i32.store
(tee_local $0
(call $~lib/allocator/arena/allocate_memory
(call $~lib/memory/memory.allocate
(i32.const 4)
)
)
@ -129,14 +142,14 @@
)
(get_local $0)
)
(func $std/constructor/EmptyCtorWithFieldNoInit#constructor (; 3 ;) (type $ii) (param $0 i32) (result i32)
(func $std/constructor/EmptyCtorWithFieldNoInit#constructor (; 6 ;) (type $ii) (param $0 i32) (result i32)
(if
(i32.eqz
(get_local $0)
)
(i32.store
(tee_local $0
(call $~lib/allocator/arena/allocate_memory
(call $~lib/memory/memory.allocate
(i32.const 4)
)
)
@ -145,16 +158,16 @@
)
(get_local $0)
)
(func $std/constructor/CtorReturns#constructor (; 4 ;) (type $ii) (param $0 i32) (result i32)
(call $~lib/allocator/arena/allocate_memory
(func $std/constructor/CtorReturns#constructor (; 7 ;) (type $ii) (param $0 i32) (result i32)
(call $~lib/memory/memory.allocate
(i32.const 0)
)
)
(func $std/constructor/CtorConditionallyReturns#constructor (; 5 ;) (type $ii) (param $0 i32) (result i32)
(func $std/constructor/CtorConditionallyReturns#constructor (; 8 ;) (type $ii) (param $0 i32) (result i32)
(if
(get_global $std/constructor/b)
(return
(call $~lib/allocator/arena/allocate_memory
(call $~lib/memory/memory.allocate
(i32.const 0)
)
)
@ -162,12 +175,12 @@
(if (result i32)
(get_local $0)
(get_local $0)
(call $~lib/allocator/arena/allocate_memory
(call $~lib/memory/memory.allocate
(i32.const 0)
)
)
)
(func $std/constructor/CtorConditionallyAllocates#constructor (; 6 ;) (type $ii) (param $0 i32) (result i32)
(func $std/constructor/CtorConditionallyAllocates#constructor (; 9 ;) (type $ii) (param $0 i32) (result i32)
(if
(get_global $std/constructor/b)
(if
@ -175,7 +188,7 @@
(get_local $0)
)
(set_local $0
(call $~lib/allocator/arena/allocate_memory
(call $~lib/memory/memory.allocate
(i32.const 0)
)
)
@ -186,23 +199,17 @@
(get_local $0)
)
(set_local $0
(call $~lib/allocator/arena/allocate_memory
(call $~lib/memory/memory.allocate
(i32.const 0)
)
)
)
(get_local $0)
)
(func $start (; 7 ;) (type $v)
(func $start (; 10 ;) (type $v)
(local $0 i32)
(set_global $~lib/allocator/arena/startOffset
(i32.and
(i32.add
(get_global $HEAP_BASE)
(i32.const 7)
)
(i32.const -8)
)
(i32.const 8)
)
(set_global $~lib/allocator/arena/offset
(get_global $~lib/allocator/arena/startOffset)
@ -223,13 +230,13 @@
)
)
(set_global $std/constructor/none
(call $~lib/allocator/arena/allocate_memory
(call $~lib/memory/memory.allocate
(i32.const 0)
)
)
(i32.store
(tee_local $0
(call $~lib/allocator/arena/allocate_memory
(call $~lib/memory/memory.allocate
(i32.const 4)
)
)
@ -240,7 +247,7 @@
)
(i32.store
(tee_local $0
(call $~lib/allocator/arena/allocate_memory
(call $~lib/memory/memory.allocate
(i32.const 4)
)
)

View File

@ -46,7 +46,7 @@ var justFieldNoInit = new JustFieldNoInit();
// explicit allocation with no extra checks
class CtorReturns {
constructor() {
return changetype<CtorReturns>(allocate_memory(0));
return changetype<CtorReturns>(memory.allocate(0));
}
}
@ -58,7 +58,7 @@ var b: bool = true;
class CtorConditionallyReturns {
constructor() {
if (b) {
return changetype<CtorConditionallyReturns>(allocate_memory(0));
return changetype<CtorConditionallyReturns>(memory.allocate(0));
}
}
}

View File

@ -1,5 +1,6 @@
(module
(type $ii (func (param i32) (result i32)))
(type $i (func (result i32)))
(type $v (func))
(global $~lib/internal/allocator/AL_BITS i32 (i32.const 3))
(global $~lib/internal/allocator/AL_SIZE i32 (i32.const 8))
@ -22,7 +23,15 @@
(memory $0 0)
(export "memory" (memory $0))
(start $start)
(func $~lib/allocator/arena/allocate_memory (; 0 ;) (type $ii) (param $0 i32) (result i32)
(func $~lib/memory/memory.size (; 0 ;) (type $i) (result i32)
(current_memory)
)
(func $~lib/memory/memory.grow (; 1 ;) (type $ii) (param $0 i32) (result i32)
(grow_memory
(get_local $0)
)
)
(func $~lib/allocator/arena/__memory_allocate (; 2 ;) (type $ii) (param $0 i32) (result i32)
(local $1 i32)
(local $2 i32)
(local $3 i32)
@ -35,7 +44,7 @@
(if
(i32.gt_u
(get_local $0)
(i32.const 1073741824)
(get_global $~lib/internal/allocator/MAX_SIZE_32)
)
(unreachable)
)
@ -49,16 +58,16 @@
(get_local $1)
(get_local $0)
)
(i32.const 7)
(get_global $~lib/internal/allocator/AL_MASK)
)
(i32.xor
(i32.const 7)
(get_global $~lib/internal/allocator/AL_MASK)
(i32.const -1)
)
)
)
(set_local $3
(current_memory)
(call $~lib/memory/memory.size)
)
(if
(i32.gt_u
@ -103,14 +112,14 @@
)
(if
(i32.lt_s
(grow_memory
(call $~lib/memory/memory.grow
(get_local $5)
)
(i32.const 0)
)
(if
(i32.lt_s
(grow_memory
(call $~lib/memory/memory.grow
(get_local $4)
)
(i32.const 0)
@ -130,7 +139,14 @@
)
(i32.const 0)
)
(func $std/constructor/EmptyCtor#constructor (; 1 ;) (type $ii) (param $0 i32) (result i32)
(func $~lib/memory/memory.allocate (; 3 ;) (type $ii) (param $0 i32) (result i32)
(return
(call $~lib/allocator/arena/__memory_allocate
(get_local $0)
)
)
)
(func $std/constructor/EmptyCtor#constructor (; 4 ;) (type $ii) (param $0 i32) (result i32)
(local $1 i32)
(tee_local $0
(if (result i32)
@ -139,7 +155,7 @@
(tee_local $0
(block (result i32)
(set_local $1
(call $~lib/allocator/arena/allocate_memory
(call $~lib/memory/memory.allocate
(i32.const 0)
)
)
@ -149,7 +165,7 @@
)
)
)
(func $std/constructor/EmptyCtorWithFieldInit#constructor (; 2 ;) (type $ii) (param $0 i32) (result i32)
(func $std/constructor/EmptyCtorWithFieldInit#constructor (; 5 ;) (type $ii) (param $0 i32) (result i32)
(local $1 i32)
(tee_local $0
(if (result i32)
@ -158,7 +174,7 @@
(tee_local $0
(block (result i32)
(set_local $1
(call $~lib/allocator/arena/allocate_memory
(call $~lib/memory/memory.allocate
(i32.const 4)
)
)
@ -172,7 +188,7 @@
)
)
)
(func $std/constructor/EmptyCtorWithFieldNoInit#constructor (; 3 ;) (type $ii) (param $0 i32) (result i32)
(func $std/constructor/EmptyCtorWithFieldNoInit#constructor (; 6 ;) (type $ii) (param $0 i32) (result i32)
(local $1 i32)
(tee_local $0
(if (result i32)
@ -181,7 +197,7 @@
(tee_local $0
(block (result i32)
(set_local $1
(call $~lib/allocator/arena/allocate_memory
(call $~lib/memory/memory.allocate
(i32.const 4)
)
)
@ -195,17 +211,17 @@
)
)
)
(func $std/constructor/CtorReturns#constructor (; 4 ;) (type $ii) (param $0 i32) (result i32)
(call $~lib/allocator/arena/allocate_memory
(func $std/constructor/CtorReturns#constructor (; 7 ;) (type $ii) (param $0 i32) (result i32)
(call $~lib/memory/memory.allocate
(i32.const 0)
)
)
(func $std/constructor/CtorConditionallyReturns#constructor (; 5 ;) (type $ii) (param $0 i32) (result i32)
(func $std/constructor/CtorConditionallyReturns#constructor (; 8 ;) (type $ii) (param $0 i32) (result i32)
(local $1 i32)
(if
(get_global $std/constructor/b)
(return
(call $~lib/allocator/arena/allocate_memory
(call $~lib/memory/memory.allocate
(i32.const 0)
)
)
@ -217,7 +233,7 @@
(tee_local $0
(block (result i32)
(set_local $1
(call $~lib/allocator/arena/allocate_memory
(call $~lib/memory/memory.allocate
(i32.const 0)
)
)
@ -227,7 +243,7 @@
)
)
)
(func $std/constructor/CtorAllocates#constructor (; 6 ;) (type $ii) (param $0 i32) (result i32)
(func $std/constructor/CtorAllocates#constructor (; 9 ;) (type $ii) (param $0 i32) (result i32)
(local $1 i32)
(drop
(tee_local $0
@ -237,7 +253,7 @@
(tee_local $0
(block (result i32)
(set_local $1
(call $~lib/allocator/arena/allocate_memory
(call $~lib/memory/memory.allocate
(i32.const 0)
)
)
@ -249,7 +265,7 @@
)
(get_local $0)
)
(func $std/constructor/CtorConditionallyAllocates#constructor (; 7 ;) (type $ii) (param $0 i32) (result i32)
(func $std/constructor/CtorConditionallyAllocates#constructor (; 10 ;) (type $ii) (param $0 i32) (result i32)
(local $1 i32)
(if
(get_global $std/constructor/b)
@ -261,7 +277,7 @@
(tee_local $0
(block (result i32)
(set_local $1
(call $~lib/allocator/arena/allocate_memory
(call $~lib/memory/memory.allocate
(i32.const 0)
)
)
@ -279,7 +295,7 @@
(tee_local $0
(block (result i32)
(set_local $1
(call $~lib/allocator/arena/allocate_memory
(call $~lib/memory/memory.allocate
(i32.const 0)
)
)
@ -289,16 +305,16 @@
)
)
)
(func $start (; 8 ;) (type $v)
(func $start (; 11 ;) (type $v)
(local $0 i32)
(set_global $~lib/allocator/arena/startOffset
(i32.and
(i32.add
(get_global $HEAP_BASE)
(i32.const 7)
(get_global $~lib/internal/allocator/AL_MASK)
)
(i32.xor
(i32.const 7)
(get_global $~lib/internal/allocator/AL_MASK)
(i32.const -1)
)
)
@ -324,7 +340,7 @@
(set_global $std/constructor/none
(block (result i32)
(set_local $0
(call $~lib/allocator/arena/allocate_memory
(call $~lib/memory/memory.allocate
(i32.const 0)
)
)
@ -334,7 +350,7 @@
(set_global $std/constructor/justFieldInit
(block (result i32)
(set_local $0
(call $~lib/allocator/arena/allocate_memory
(call $~lib/memory/memory.allocate
(i32.const 4)
)
)
@ -348,7 +364,7 @@
(set_global $std/constructor/justFieldNoInit
(block (result i32)
(set_local $0
(call $~lib/allocator/arena/allocate_memory
(call $~lib/memory/memory.allocate
(i32.const 4)
)
)

View File

@ -0,0 +1,76 @@
(module
(type $iv (func (param i32)))
(type $iiiiv (func (param i32 i32 i32 i32)))
(type $v (func))
(import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32)))
(global $std/gc-integration/B.d (mut i32) (i32.const 16))
(global $std/gc-integration/a_ref (mut i32) (i32.const 24))
(global $std/gc-integration/b_ref (mut i32) (i32.const 32))
(global $std/gc-integration/i (mut i32) (i32.const 0))
(table 1 1 anyfunc)
(elem (i32.const 0) $start~anonymous|0)
(memory $0 1)
(data (i32.const 8) "\15\00\00\00s\00t\00d\00/\00g\00c\00-\00i\00n\00t\00e\00g\00r\00a\00t\00i\00o\00n\00.\00t\00s")
(export "memory" (memory $0))
(export "table" (table $0))
(start $start)
(func $start~anonymous|0 (; 1 ;) (type $iv) (param $0 i32)
(set_global $std/gc-integration/i
(i32.add
(get_global $std/gc-integration/i)
(i32.const 1)
)
)
(if
(i32.ne
(get_local $0)
(i32.shl
(get_global $std/gc-integration/i)
(i32.const 3)
)
)
(block
(call $~lib/env/abort
(i32.const 0)
(i32.const 8)
(i32.const 14)
(i32.const 43)
)
(unreachable)
)
)
)
(func $start (; 2 ;) (type $v)
(call_indirect (type $iv)
(i32.const 8)
(i32.const 0)
)
(call_indirect (type $iv)
(get_global $std/gc-integration/B.d)
(i32.const 0)
)
(call_indirect (type $iv)
(get_global $std/gc-integration/a_ref)
(i32.const 0)
)
(call_indirect (type $iv)
(get_global $std/gc-integration/b_ref)
(i32.const 0)
)
(if
(i32.ne
(get_global $std/gc-integration/i)
(i32.const 4)
)
(block
(call $~lib/env/abort
(i32.const 0)
(i32.const 8)
(i32.const 15)
(i32.const 0)
)
(unreachable)
)
)
)
)

View File

@ -0,0 +1,15 @@
class A {}
class B {
static readonly c: B = changetype<B>(8);
static d: A = changetype<A>(16);
}
B.c;
B.d;
var no_ref: usize = 64;
var a_ref: A | null = changetype<A>(24);
var b_ref: B = changetype<B>(32);
var i: i32 = 0;
__gc_iterate_roots((ref: usize): void => { assert(<u32>ref == ++i << 3); });
assert(i == 4);

View File

@ -0,0 +1,93 @@
(module
(type $iv (func (param i32)))
(type $iiiiv (func (param i32 i32 i32 i32)))
(type $v (func))
(import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32)))
(global $std/gc-integration/B.c i32 (i32.const 8))
(global $std/gc-integration/B.d (mut i32) (i32.const 16))
(global $std/gc-integration/no_ref (mut i32) (i32.const 64))
(global $std/gc-integration/a_ref (mut i32) (i32.const 24))
(global $std/gc-integration/b_ref (mut i32) (i32.const 32))
(global $std/gc-integration/i (mut i32) (i32.const 0))
(global $HEAP_BASE i32 (i32.const 56))
(table 1 1 anyfunc)
(elem (i32.const 0) $start~anonymous|0)
(memory $0 1)
(data (i32.const 8) "\15\00\00\00s\00t\00d\00/\00g\00c\00-\00i\00n\00t\00e\00g\00r\00a\00t\00i\00o\00n\00.\00t\00s\00")
(export "memory" (memory $0))
(export "table" (table $0))
(start $start)
(func $start~anonymous|0 (; 1 ;) (type $iv) (param $0 i32)
(if
(i32.eqz
(i32.eq
(get_local $0)
(i32.shl
(block (result i32)
(set_global $std/gc-integration/i
(i32.add
(get_global $std/gc-integration/i)
(i32.const 1)
)
)
(get_global $std/gc-integration/i)
)
(i32.const 3)
)
)
)
(block
(call $~lib/env/abort
(i32.const 0)
(i32.const 8)
(i32.const 14)
(i32.const 43)
)
(unreachable)
)
)
)
(func $start (; 2 ;) (type $v)
(drop
(get_global $std/gc-integration/B.c)
)
(drop
(get_global $std/gc-integration/B.d)
)
(block
(call_indirect (type $iv)
(get_global $std/gc-integration/B.c)
(i32.const 0)
)
(call_indirect (type $iv)
(get_global $std/gc-integration/B.d)
(i32.const 0)
)
(call_indirect (type $iv)
(get_global $std/gc-integration/a_ref)
(i32.const 0)
)
(call_indirect (type $iv)
(get_global $std/gc-integration/b_ref)
(i32.const 0)
)
)
(if
(i32.eqz
(i32.eq
(get_global $std/gc-integration/i)
(i32.const 4)
)
)
(block
(call $~lib/env/abort
(i32.const 0)
(i32.const 8)
(i32.const 15)
(i32.const 0)
)
(unreachable)
)
)
)
)

View File

@ -0,0 +1,319 @@
(module
(type $iv (func (param i32)))
(type $iii (func (param i32 i32) (result i32)))
(type $iiiiv (func (param i32 i32 i32 i32)))
(type $ii (func (param i32) (result i32)))
(type $i (func (result i32)))
(type $iiv (func (param i32 i32)))
(type $v (func))
(import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32)))
(global $~lib/allocator/arena/startOffset (mut i32) (i32.const 0))
(global $~lib/allocator/arena/offset (mut i32) (i32.const 0))
(global $~lib/collector/itcm/state (mut i32) (i32.const 0))
(global $~lib/collector/itcm/set1 (mut i32) (i32.const 0))
(global $~lib/collector/itcm/Flags.WHITE (mut i32) (i32.const 0))
(global $std/gc/obj (mut i32) (i32.const 0))
(global $std/gc/head (mut i32) (i32.const 0))
(table 1 1 anyfunc)
(elem (i32.const 0) $std/gc/MyObject_visit)
(memory $0 1)
(data (i32.const 8) "\16\00\00\00~\00l\00i\00b\00/\00c\00o\00l\00l\00e\00c\00t\00o\00r\00/\00i\00t\00c\00m\00.\00t\00s")
(data (i32.const 56) "\t\00\00\00s\00t\00d\00/\00g\00c\00.\00t\00s")
(export "memory" (memory $0))
(export "table" (table $0))
(start $start)
(func $std/gc/MyObject_visit (; 1 ;) (type $iv) (param $0 i32)
(nop)
)
(func $~lib/memory/memory.size (; 2 ;) (type $i) (result i32)
(current_memory)
)
(func $~lib/memory/memory.grow (; 3 ;) (type $ii) (param $0 i32) (result i32)
(grow_memory
(get_local $0)
)
)
(func $~lib/allocator/arena/__memory_allocate (; 4 ;) (type $ii) (param $0 i32) (result i32)
(local $1 i32)
(local $2 i32)
(local $3 i32)
(if
(get_local $0)
(block
(if
(i32.gt_u
(get_local $0)
(i32.const 1073741824)
)
(unreachable)
)
(if
(i32.gt_u
(tee_local $0
(i32.and
(i32.add
(i32.add
(tee_local $1
(get_global $~lib/allocator/arena/offset)
)
(get_local $0)
)
(i32.const 7)
)
(i32.const -8)
)
)
(i32.shl
(tee_local $2
(call $~lib/memory/memory.size)
)
(i32.const 16)
)
)
(if
(i32.lt_s
(call $~lib/memory/memory.grow
(select
(get_local $2)
(tee_local $3
(i32.shr_u
(i32.and
(i32.add
(i32.sub
(get_local $0)
(get_local $1)
)
(i32.const 65535)
)
(i32.const -65536)
)
(i32.const 16)
)
)
(i32.gt_s
(get_local $2)
(get_local $3)
)
)
)
(i32.const 0)
)
(if
(i32.lt_s
(call $~lib/memory/memory.grow
(get_local $3)
)
(i32.const 0)
)
(unreachable)
)
)
)
(set_global $~lib/allocator/arena/offset
(get_local $0)
)
(return
(get_local $1)
)
)
)
(i32.const 0)
)
(func $~lib/memory/memory.allocate (; 5 ;) (type $ii) (param $0 i32) (result i32)
(call $~lib/allocator/arena/__memory_allocate
(get_local $0)
)
)
(func $~lib/collector/itcm/ManagedObject#makeWhite (; 6 ;) (type $iv) (param $0 i32)
(i32.store
(get_local $0)
(i32.or
(i32.and
(i32.load
(get_local $0)
)
(i32.const -8)
)
(get_global $~lib/collector/itcm/Flags.WHITE)
)
)
)
(func $~lib/collector/itcm/ManagedObject#set:next (; 7 ;) (type $iiv) (param $0 i32) (param $1 i32)
(i32.store
(get_local $0)
(i32.or
(get_local $1)
(i32.and
(i32.load
(get_local $0)
)
(i32.const 7)
)
)
)
)
(func $~lib/collector/itcm/ManagedObject#insert (; 8 ;) (type $iiv) (param $0 i32) (param $1 i32)
(local $2 i32)
(set_local $2
(i32.load offset=4
(get_local $0)
)
)
(call $~lib/collector/itcm/ManagedObject#set:next
(get_local $1)
(get_local $0)
)
(i32.store offset=4
(get_local $1)
(get_local $2)
)
(call $~lib/collector/itcm/ManagedObject#set:next
(get_local $2)
(get_local $1)
)
(i32.store offset=4
(get_local $0)
(get_local $1)
)
)
(func $~lib/collector/itcm/gc.alloc (; 9 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32)
(if
(i32.gt_u
(get_local $0)
(i32.const 1073741808)
)
(block
(call $~lib/env/abort
(i32.const 0)
(i32.const 8)
(i32.const 214)
(i32.const 4)
)
(unreachable)
)
)
(call $~lib/collector/itcm/ManagedObject#makeWhite
(tee_local $2
(call $~lib/memory/memory.allocate
(i32.add
(get_local $0)
(i32.const 16)
)
)
)
)
(i32.store offset=8
(get_local $2)
(get_local $1)
)
(call $~lib/collector/itcm/ManagedObject#insert
(get_global $~lib/collector/itcm/set1)
(get_local $2)
)
(i32.add
(get_local $2)
(i32.const 16)
)
)
(func $start (; 10 ;) (type $v)
(set_global $~lib/allocator/arena/startOffset
(i32.const 80)
)
(set_global $~lib/allocator/arena/offset
(get_global $~lib/allocator/arena/startOffset)
)
(set_global $~lib/collector/itcm/state
(i32.const 0)
)
(set_global $std/gc/obj
(call $~lib/collector/itcm/gc.alloc
(i32.const 4)
(i32.const 0)
)
)
(i32.store
(get_global $std/gc/obj)
(i32.const 123)
)
(set_global $std/gc/head
(i32.sub
(get_global $std/gc/obj)
(i32.const 16)
)
)
(if
(i32.load
(get_global $std/gc/head)
)
(block
(call $~lib/env/abort
(i32.const 0)
(i32.const 56)
(i32.const 16)
(i32.const 0)
)
(unreachable)
)
)
(if
(i32.load offset=4
(get_global $std/gc/head)
)
(block
(call $~lib/env/abort
(i32.const 0)
(i32.const 56)
(i32.const 17)
(i32.const 0)
)
(unreachable)
)
)
(if
(i32.load offset=8
(get_global $std/gc/head)
)
(block
(call $~lib/env/abort
(i32.const 0)
(i32.const 56)
(i32.const 18)
(i32.const 0)
)
(unreachable)
)
)
(if
(i32.load offset=12
(get_global $std/gc/head)
)
(block
(call $~lib/env/abort
(i32.const 0)
(i32.const 56)
(i32.const 19)
(i32.const 0)
)
(unreachable)
)
)
(if
(i32.ne
(i32.load offset=16
(get_global $std/gc/head)
)
(i32.const 123)
)
(block
(call $~lib/env/abort
(i32.const 0)
(i32.const 56)
(i32.const 21)
(i32.const 0)
)
(unreachable)
)
)
)
)

23
tests/compiler/std/gc.ts Normal file
View File

@ -0,0 +1,23 @@
import "allocator/arena";
import { gc } from "collector/itcm";
// a class to test with
class MyObject {
a: u32;
}
function MyObject_visit(ref: usize): void { }
// allocate a managed instance
var obj = changetype<MyObject>(gc.alloc(offsetof<MyObject>(), MyObject_visit));
obj.a = 123;
var head = changetype<usize>(obj) - 16;
// header
assert(load<u32>(head, 0) == 0); // nextWithFlags
assert(load<u32>(head, 4) == 0); // prev
assert(load<u32>(head, 8) == changetype<u32>(MyObject_visit)); // visitFn
assert(load<u32>(head, 12) == 0); // unused
// contents
assert(load<u32>(head, 16) == 123); // Obj#a
// gc.collect(); // FIXME: endless loop

View File

@ -0,0 +1,398 @@
(module
(type $iv (func (param i32)))
(type $iii (func (param i32 i32) (result i32)))
(type $iiiiv (func (param i32 i32 i32 i32)))
(type $ii (func (param i32) (result i32)))
(type $i (func (result i32)))
(type $iiv (func (param i32 i32)))
(type $v (func))
(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))
(global $~lib/internal/allocator/MAX_SIZE_32 i32 (i32.const 1073741824))
(global $~lib/allocator/arena/startOffset (mut i32) (i32.const 0))
(global $~lib/allocator/arena/offset (mut i32) (i32.const 0))
(global $NaN f64 (f64.const nan:0x8000000000000))
(global $Infinity f64 (f64.const inf))
(global $~lib/collector/itcm/State.INIT i32 (i32.const 0))
(global $~lib/collector/itcm/State.IDLE i32 (i32.const 1))
(global $~lib/collector/itcm/State.MARK i32 (i32.const 2))
(global $~lib/collector/itcm/State.SWEEP i32 (i32.const 3))
(global $~lib/collector/itcm/state (mut i32) (i32.const 0))
(global $~lib/collector/itcm/set1 (mut i32) (i32.const 0))
(global $~lib/collector/itcm/set2 (mut i32) (i32.const 0))
(global $~lib/collector/itcm/iter (mut i32) (i32.const 0))
(global $~lib/collector/itcm/ManagedObject.SIZE i32 (i32.const 16))
(global $~lib/collector/itcm/Flags.MASK i32 (i32.const 7))
(global $~lib/collector/itcm/Flags.WHITE (mut i32) (i32.const 0))
(global $std/gc/obj (mut i32) (i32.const 0))
(global $std/gc/head (mut i32) (i32.const 0))
(global $HEAP_BASE i32 (i32.const 80))
(table 1 1 anyfunc)
(elem (i32.const 0) $std/gc/MyObject_visit)
(memory $0 1)
(data (i32.const 8) "\16\00\00\00~\00l\00i\00b\00/\00c\00o\00l\00l\00e\00c\00t\00o\00r\00/\00i\00t\00c\00m\00.\00t\00s\00")
(data (i32.const 56) "\t\00\00\00s\00t\00d\00/\00g\00c\00.\00t\00s\00")
(export "memory" (memory $0))
(export "table" (table $0))
(start $start)
(func $std/gc/MyObject_visit (; 1 ;) (type $iv) (param $0 i32)
(nop)
)
(func $~lib/memory/memory.size (; 2 ;) (type $i) (result i32)
(current_memory)
)
(func $~lib/memory/memory.grow (; 3 ;) (type $ii) (param $0 i32) (result i32)
(grow_memory
(get_local $0)
)
)
(func $~lib/allocator/arena/__memory_allocate (; 4 ;) (type $ii) (param $0 i32) (result i32)
(local $1 i32)
(local $2 i32)
(local $3 i32)
(local $4 i32)
(local $5 i32)
(local $6 i32)
(if
(get_local $0)
(block
(if
(i32.gt_u
(get_local $0)
(get_global $~lib/internal/allocator/MAX_SIZE_32)
)
(unreachable)
)
(set_local $1
(get_global $~lib/allocator/arena/offset)
)
(set_local $2
(i32.and
(i32.add
(i32.add
(get_local $1)
(get_local $0)
)
(get_global $~lib/internal/allocator/AL_MASK)
)
(i32.xor
(get_global $~lib/internal/allocator/AL_MASK)
(i32.const -1)
)
)
)
(set_local $3
(call $~lib/memory/memory.size)
)
(if
(i32.gt_u
(get_local $2)
(i32.shl
(get_local $3)
(i32.const 16)
)
)
(block
(set_local $4
(i32.shr_u
(i32.and
(i32.add
(i32.sub
(get_local $2)
(get_local $1)
)
(i32.const 65535)
)
(i32.xor
(i32.const 65535)
(i32.const -1)
)
)
(i32.const 16)
)
)
(set_local $5
(select
(tee_local $5
(get_local $3)
)
(tee_local $6
(get_local $4)
)
(i32.gt_s
(get_local $5)
(get_local $6)
)
)
)
(if
(i32.lt_s
(call $~lib/memory/memory.grow
(get_local $5)
)
(i32.const 0)
)
(if
(i32.lt_s
(call $~lib/memory/memory.grow
(get_local $4)
)
(i32.const 0)
)
(unreachable)
)
)
)
)
(set_global $~lib/allocator/arena/offset
(get_local $2)
)
(return
(get_local $1)
)
)
)
(i32.const 0)
)
(func $~lib/memory/memory.allocate (; 5 ;) (type $ii) (param $0 i32) (result i32)
(return
(call $~lib/allocator/arena/__memory_allocate
(get_local $0)
)
)
)
(func $~lib/collector/itcm/ManagedObject#makeWhite (; 6 ;) (type $iv) (param $0 i32)
(i32.store
(get_local $0)
(i32.or
(i32.and
(i32.load
(get_local $0)
)
(i32.xor
(get_global $~lib/collector/itcm/Flags.MASK)
(i32.const -1)
)
)
(get_global $~lib/collector/itcm/Flags.WHITE)
)
)
)
(func $~lib/collector/itcm/ManagedObject#set:next (; 7 ;) (type $iiv) (param $0 i32) (param $1 i32)
(i32.store
(get_local $0)
(i32.or
(get_local $1)
(i32.and
(i32.load
(get_local $0)
)
(get_global $~lib/collector/itcm/Flags.MASK)
)
)
)
)
(func $~lib/collector/itcm/ManagedObject#insert (; 8 ;) (type $iiv) (param $0 i32) (param $1 i32)
(local $2 i32)
(set_local $2
(i32.load offset=4
(get_local $0)
)
)
(call $~lib/collector/itcm/ManagedObject#set:next
(get_local $1)
(get_local $0)
)
(i32.store offset=4
(get_local $1)
(get_local $2)
)
(call $~lib/collector/itcm/ManagedObject#set:next
(get_local $2)
(get_local $1)
)
(i32.store offset=4
(get_local $0)
(get_local $1)
)
)
(func $~lib/collector/itcm/gc.alloc (; 9 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32)
(if
(i32.eqz
(i32.le_u
(get_local $0)
(i32.sub
(get_global $~lib/internal/allocator/MAX_SIZE_32)
(get_global $~lib/collector/itcm/ManagedObject.SIZE)
)
)
)
(block
(call $~lib/env/abort
(i32.const 0)
(i32.const 8)
(i32.const 214)
(i32.const 4)
)
(unreachable)
)
)
(set_local $2
(call $~lib/memory/memory.allocate
(i32.add
(get_global $~lib/collector/itcm/ManagedObject.SIZE)
(get_local $0)
)
)
)
(call $~lib/collector/itcm/ManagedObject#makeWhite
(get_local $2)
)
(i32.store offset=8
(get_local $2)
(get_local $1)
)
(call $~lib/collector/itcm/ManagedObject#insert
(get_global $~lib/collector/itcm/set1)
(get_local $2)
)
(i32.add
(get_local $2)
(get_global $~lib/collector/itcm/ManagedObject.SIZE)
)
)
(func $start (; 10 ;) (type $v)
(set_global $~lib/allocator/arena/startOffset
(i32.and
(i32.add
(get_global $HEAP_BASE)
(get_global $~lib/internal/allocator/AL_MASK)
)
(i32.xor
(get_global $~lib/internal/allocator/AL_MASK)
(i32.const -1)
)
)
)
(set_global $~lib/allocator/arena/offset
(get_global $~lib/allocator/arena/startOffset)
)
(set_global $~lib/collector/itcm/state
(get_global $~lib/collector/itcm/State.INIT)
)
(set_global $std/gc/obj
(call $~lib/collector/itcm/gc.alloc
(i32.const 4)
(i32.const 0)
)
)
(i32.store
(get_global $std/gc/obj)
(i32.const 123)
)
(set_global $std/gc/head
(i32.sub
(get_global $std/gc/obj)
(i32.const 16)
)
)
(if
(i32.eqz
(i32.eq
(i32.load
(get_global $std/gc/head)
)
(i32.const 0)
)
)
(block
(call $~lib/env/abort
(i32.const 0)
(i32.const 56)
(i32.const 16)
(i32.const 0)
)
(unreachable)
)
)
(if
(i32.eqz
(i32.eq
(i32.load offset=4
(get_global $std/gc/head)
)
(i32.const 0)
)
)
(block
(call $~lib/env/abort
(i32.const 0)
(i32.const 56)
(i32.const 17)
(i32.const 0)
)
(unreachable)
)
)
(if
(i32.eqz
(i32.eq
(i32.load offset=8
(get_global $std/gc/head)
)
(i32.const 0)
)
)
(block
(call $~lib/env/abort
(i32.const 0)
(i32.const 56)
(i32.const 18)
(i32.const 0)
)
(unreachable)
)
)
(if
(i32.eqz
(i32.eq
(i32.load offset=12
(get_global $std/gc/head)
)
(i32.const 0)
)
)
(block
(call $~lib/env/abort
(i32.const 0)
(i32.const 56)
(i32.const 19)
(i32.const 0)
)
(unreachable)
)
)
(if
(i32.eqz
(i32.eq
(i32.load offset=16
(get_global $std/gc/head)
)
(i32.const 123)
)
)
(block
(call $~lib/env/abort
(i32.const 0)
(i32.const 56)
(i32.const 21)
(i32.const 0)
)
(unreachable)
)
)
)
)

View File

@ -26,7 +26,7 @@
(local $2 i32)
(local $3 i32)
(set_local $1
(i32.const -2128831035)
(get_global $~lib/internal/hash/FNV_OFFSET)
)
(block $break|0
(block
@ -62,7 +62,7 @@
)
)
)
(i32.const 16777619)
(get_global $~lib/internal/hash/FNV_PRIME)
)
)
(set_local $2
@ -82,7 +82,7 @@
(func $~lib/internal/hash/hash32 (; 2 ;) (type $ii) (param $0 i32) (result i32)
(local $1 i32)
(set_local $1
(i32.const -2128831035)
(get_global $~lib/internal/hash/FNV_OFFSET)
)
(set_local $1
(i32.mul
@ -93,7 +93,7 @@
(i32.const 255)
)
)
(i32.const 16777619)
(get_global $~lib/internal/hash/FNV_PRIME)
)
)
(set_local $1
@ -108,7 +108,7 @@
(i32.const 255)
)
)
(i32.const 16777619)
(get_global $~lib/internal/hash/FNV_PRIME)
)
)
(set_local $1
@ -123,7 +123,7 @@
(i32.const 255)
)
)
(i32.const 16777619)
(get_global $~lib/internal/hash/FNV_PRIME)
)
)
(set_local $1
@ -135,7 +135,7 @@
(i32.const 24)
)
)
(i32.const 16777619)
(get_global $~lib/internal/hash/FNV_PRIME)
)
)
(get_local $1)
@ -158,7 +158,7 @@
)
)
(set_local $3
(i32.const -2128831035)
(get_global $~lib/internal/hash/FNV_OFFSET)
)
(set_local $3
(i32.mul
@ -169,7 +169,7 @@
(i32.const 255)
)
)
(i32.const 16777619)
(get_global $~lib/internal/hash/FNV_PRIME)
)
)
(set_local $3
@ -184,7 +184,7 @@
(i32.const 255)
)
)
(i32.const 16777619)
(get_global $~lib/internal/hash/FNV_PRIME)
)
)
(set_local $3
@ -199,7 +199,7 @@
(i32.const 255)
)
)
(i32.const 16777619)
(get_global $~lib/internal/hash/FNV_PRIME)
)
)
(set_local $3
@ -211,7 +211,7 @@
(i32.const 24)
)
)
(i32.const 16777619)
(get_global $~lib/internal/hash/FNV_PRIME)
)
)
(set_local $3
@ -223,7 +223,7 @@
(i32.const 255)
)
)
(i32.const 16777619)
(get_global $~lib/internal/hash/FNV_PRIME)
)
)
(set_local $3
@ -238,7 +238,7 @@
(i32.const 255)
)
)
(i32.const 16777619)
(get_global $~lib/internal/hash/FNV_PRIME)
)
)
(set_local $3
@ -253,7 +253,7 @@
(i32.const 255)
)
)
(i32.const 16777619)
(get_global $~lib/internal/hash/FNV_PRIME)
)
)
(set_local $3
@ -265,7 +265,7 @@
(i32.const 24)
)
)
(i32.const 16777619)
(get_global $~lib/internal/hash/FNV_PRIME)
)
)
(get_local $3)

View File

@ -13,6 +13,7 @@
(global $std/libm/SQRT1_2 f64 (f64.const 0.7071067811865476))
(global $std/libm/SQRT2 f64 (f64.const 1.4142135623730951))
(memory $0 0)
(export "memory" (memory $0))
(export "E" (global $std/libm/E))
(export "LN10" (global $std/libm/LN10))
(export "LN2" (global $std/libm/LN2))
@ -55,7 +56,6 @@
(export "tan" (func $std/libm/cos))
(export "tanh" (func $std/libm/tanh))
(export "trunc" (func $std/libm/trunc))
(export "memory" (memory $0))
(func $std/libm/abs (; 0 ;) (type $FF) (param $0 f64) (result f64)
(f64.abs
(get_local $0)

View File

@ -4,17 +4,27 @@
(type $FFF (func (param f64 f64) (result f64)))
(type $FiF (func (param f64 i32) (result f64)))
(type $Ff (func (param f64) (result f32)))
(global $~lib/math/NativeMath.E f64 (f64.const 2.718281828459045))
(global $std/libm/E f64 (f64.const 2.718281828459045))
(global $~lib/math/NativeMath.LN10 f64 (f64.const 2.302585092994046))
(global $std/libm/LN10 f64 (f64.const 2.302585092994046))
(global $~lib/math/NativeMath.LN2 f64 (f64.const 0.6931471805599453))
(global $std/libm/LN2 f64 (f64.const 0.6931471805599453))
(global $~lib/math/NativeMath.LOG10E f64 (f64.const 0.4342944819032518))
(global $std/libm/LOG10E f64 (f64.const 0.4342944819032518))
(global $~lib/math/NativeMath.LOG2E f64 (f64.const 1.4426950408889634))
(global $std/libm/LOG2E f64 (f64.const 1.4426950408889634))
(global $~lib/math/NativeMath.PI f64 (f64.const 3.141592653589793))
(global $std/libm/PI f64 (f64.const 3.141592653589793))
(global $~lib/math/NativeMath.SQRT1_2 f64 (f64.const 0.7071067811865476))
(global $std/libm/SQRT1_2 f64 (f64.const 0.7071067811865476))
(global $~lib/math/NativeMath.SQRT2 f64 (f64.const 1.4142135623730951))
(global $std/libm/SQRT2 f64 (f64.const 1.4142135623730951))
(global $NaN f64 (f64.const nan:0x8000000000000))
(global $f64.EPSILON f64 (f64.const 2.220446049250313e-16))
(global $HEAP_BASE i32 (i32.const 8))
(memory $0 0)
(export "memory" (memory $0))
(export "E" (global $std/libm/E))
(export "LN10" (global $std/libm/LN10))
(export "LN2" (global $std/libm/LN2))
@ -57,7 +67,6 @@
(export "tan" (func $std/libm/tan))
(export "tanh" (func $std/libm/tanh))
(export "trunc" (func $std/libm/trunc))
(export "memory" (memory $0))
(func $std/libm/abs (; 0 ;) (type $FF) (param $0 f64) (result f64)
(block $~lib/math/NativeMath.abs|inlined.0 (result f64)
(f64.abs
@ -2183,12 +2192,12 @@
)
)
(return
(f64.const 3.141592653589793)
(get_global $~lib/math/NativeMath.PI)
)
)
(return
(f64.neg
(f64.const 3.141592653589793)
(get_global $~lib/math/NativeMath.PI)
)
)
)

View File

@ -1,6 +1,7 @@
(module
(type $v (func))
(type $ii (func (param i32) (result i32)))
(type $i (func (result i32)))
(type $iv (func (param i32)))
(type $iiii (func (param i32 i32 i32) (result i32)))
(type $iiiiv (func (param i32 i32 i32 i32)))
@ -20,14 +21,21 @@
(import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32)))
(global $~lib/allocator/arena/startOffset (mut i32) (i32.const 0))
(global $~lib/allocator/arena/offset (mut i32) (i32.const 0))
(global $HEAP_BASE i32 (i32.const 136))
(memory $0 1)
(data (i32.const 8) "\13\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s")
(data (i32.const 52) "\1c\00\00\00~\00l\00i\00b\00/\00i\00n\00t\00e\00r\00n\00a\00l\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s")
(data (i32.const 112) "\n\00\00\00s\00t\00d\00/\00m\00a\00p\00.\00t\00s")
(export "memory" (memory $0))
(start $start)
(func $~lib/allocator/arena/allocate_memory (; 1 ;) (type $ii) (param $0 i32) (result i32)
(func $~lib/memory/memory.size (; 1 ;) (type $i) (result i32)
(current_memory)
)
(func $~lib/memory/memory.grow (; 2 ;) (type $ii) (param $0 i32) (result i32)
(grow_memory
(get_local $0)
)
)
(func $~lib/allocator/arena/__memory_allocate (; 3 ;) (type $ii) (param $0 i32) (result i32)
(local $1 i32)
(local $2 i32)
(local $3 i32)
@ -59,14 +67,14 @@
)
(i32.shl
(tee_local $2
(current_memory)
(call $~lib/memory/memory.size)
)
(i32.const 16)
)
)
(if
(i32.lt_s
(grow_memory
(call $~lib/memory/memory.grow
(select
(get_local $2)
(tee_local $3
@ -94,7 +102,7 @@
)
(if
(i32.lt_s
(grow_memory
(call $~lib/memory/memory.grow
(get_local $3)
)
(i32.const 0)
@ -113,7 +121,12 @@
)
(i32.const 0)
)
(func $~lib/internal/arraybuffer/computeSize (; 2 ;) (type $ii) (param $0 i32) (result i32)
(func $~lib/memory/memory.allocate (; 4 ;) (type $ii) (param $0 i32) (result i32)
(call $~lib/allocator/arena/__memory_allocate
(get_local $0)
)
)
(func $~lib/internal/arraybuffer/computeSize (; 5 ;) (type $ii) (param $0 i32) (result i32)
(i32.shl
(i32.const 1)
(i32.sub
@ -127,7 +140,7 @@
)
)
)
(func $~lib/internal/arraybuffer/allocUnsafe (; 3 ;) (type $ii) (param $0 i32) (result i32)
(func $~lib/internal/arraybuffer/allocUnsafe (; 6 ;) (type $ii) (param $0 i32) (result i32)
(local $1 i32)
(if
(i32.gt_u
@ -146,7 +159,7 @@
)
(i32.store
(tee_local $1
(call $~lib/allocator/arena/allocate_memory
(call $~lib/memory/memory.allocate
(call $~lib/internal/arraybuffer/computeSize
(get_local $0)
)
@ -156,7 +169,7 @@
)
(get_local $1)
)
(func $~lib/memory/set_memory (; 4 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32)
(func $~lib/memory/memset (; 7 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32)
(local $3 i32)
(local $4 i64)
(if
@ -486,7 +499,14 @@
)
)
)
(func $~lib/arraybuffer/ArrayBuffer#constructor (; 5 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(func $~lib/memory/memory.fill (; 8 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32)
(call $~lib/memory/memset
(get_local $0)
(get_local $1)
(get_local $2)
)
)
(func $~lib/arraybuffer/ArrayBuffer#constructor (; 9 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(local $3 i32)
(if
(i32.gt_u
@ -515,7 +535,7 @@
(i32.const 1)
)
)
(call $~lib/memory/set_memory
(call $~lib/memory/memory.fill
(i32.add
(get_local $3)
(i32.const 8)
@ -526,7 +546,7 @@
)
(get_local $3)
)
(func $~lib/map/Map<i8,i32>#clear (; 6 ;) (type $iv) (param $0 i32)
(func $~lib/map/Map<i8,i32>#clear (; 10 ;) (type $iv) (param $0 i32)
(i32.store
(get_local $0)
(call $~lib/arraybuffer/ArrayBuffer#constructor
@ -560,7 +580,7 @@
(i32.const 0)
)
)
(func $~lib/map/Map<i8,i32>#constructor (; 7 ;) (type $ii) (param $0 i32) (result i32)
(func $~lib/map/Map<i8,i32>#constructor (; 11 ;) (type $ii) (param $0 i32) (result i32)
(if
(i32.eqz
(get_local $0)
@ -568,7 +588,7 @@
(block
(i32.store
(tee_local $0
(call $~lib/allocator/arena/allocate_memory
(call $~lib/memory/memory.allocate
(i32.const 24)
)
)
@ -601,7 +621,7 @@
)
(get_local $0)
)
(func $~lib/internal/hash/hash8 (; 8 ;) (type $ii) (param $0 i32) (result i32)
(func $~lib/internal/hash/hash8 (; 12 ;) (type $ii) (param $0 i32) (result i32)
(i32.mul
(i32.xor
(get_local $0)
@ -610,7 +630,7 @@
(i32.const 16777619)
)
)
(func $~lib/map/Map<i8,i32>#find (; 9 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(func $~lib/map/Map<i8,i32>#find (; 13 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(set_local $2
(i32.load offset=8
(i32.add
@ -676,7 +696,7 @@
)
(i32.const 0)
)
(func $~lib/map/Map<i8,i32>#has (; 10 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(func $~lib/map/Map<i8,i32>#has (; 14 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(i32.ne
(call $~lib/map/Map<i8,i32>#find
(get_local $0)
@ -694,7 +714,7 @@
(i32.const 0)
)
)
(func $~lib/map/Map<i8,i32>#rehash (; 11 ;) (type $iiv) (param $0 i32) (param $1 i32)
(func $~lib/map/Map<i8,i32>#rehash (; 15 ;) (type $iiv) (param $0 i32) (param $1 i32)
(local $2 i32)
(local $3 i32)
(local $4 i32)
@ -857,7 +877,7 @@
)
)
)
(func $~lib/map/Map<i8,i32>#set (; 12 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32)
(func $~lib/map/Map<i8,i32>#set (; 16 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32)
(local $3 i32)
(local $4 i32)
(local $5 i32)
@ -1000,7 +1020,7 @@
)
)
)
(func $~lib/map/Map<i8,i32>#get (; 13 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(func $~lib/map/Map<i8,i32>#get (; 17 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(tee_local $0
(if (result i32)
(tee_local $0
@ -1025,12 +1045,12 @@
)
)
)
(func $~lib/map/Map<i8,i32>#get:size (; 14 ;) (type $ii) (param $0 i32) (result i32)
(func $~lib/map/Map<i8,i32>#get:size (; 18 ;) (type $ii) (param $0 i32) (result i32)
(i32.load offset=20
(get_local $0)
)
)
(func $~lib/map/Map<i8,i32>#delete (; 15 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(func $~lib/map/Map<i8,i32>#delete (; 19 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32)
(if
(i32.eqz
@ -1131,7 +1151,7 @@
)
(i32.const 1)
)
(func $std/map/test<i8,i32> (; 16 ;) (type $v)
(func $std/map/test<i8,i32> (; 20 ;) (type $v)
(local $0 i32)
(local $1 i32)
(set_local $1
@ -1617,7 +1637,7 @@
)
)
)
(func $~lib/map/Map<u8,i32>#has (; 17 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(func $~lib/map/Map<u8,i32>#has (; 21 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(i32.ne
(call $~lib/map/Map<i8,i32>#find
(get_local $0)
@ -1632,7 +1652,7 @@
(i32.const 0)
)
)
(func $~lib/map/Map<u8,i32>#rehash (; 18 ;) (type $iiv) (param $0 i32) (param $1 i32)
(func $~lib/map/Map<u8,i32>#rehash (; 22 ;) (type $iiv) (param $0 i32) (param $1 i32)
(local $2 i32)
(local $3 i32)
(local $4 i32)
@ -1795,7 +1815,7 @@
)
)
)
(func $~lib/map/Map<u8,i32>#set (; 19 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32)
(func $~lib/map/Map<u8,i32>#set (; 23 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32)
(local $3 i32)
(local $4 i32)
(local $5 i32)
@ -1935,7 +1955,7 @@
)
)
)
(func $~lib/map/Map<u8,i32>#get (; 20 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(func $~lib/map/Map<u8,i32>#get (; 24 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(tee_local $0
(if (result i32)
(tee_local $0
@ -1957,7 +1977,7 @@
)
)
)
(func $~lib/map/Map<u8,i32>#delete (; 21 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(func $~lib/map/Map<u8,i32>#delete (; 25 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32)
(if
(i32.eqz
@ -2055,7 +2075,7 @@
)
(i32.const 1)
)
(func $std/map/test<u8,i32> (; 22 ;) (type $v)
(func $std/map/test<u8,i32> (; 26 ;) (type $v)
(local $0 i32)
(local $1 i32)
(set_local $1
@ -2520,7 +2540,7 @@
)
)
)
(func $~lib/internal/hash/hash16 (; 23 ;) (type $ii) (param $0 i32) (result i32)
(func $~lib/internal/hash/hash16 (; 27 ;) (type $ii) (param $0 i32) (result i32)
(i32.mul
(i32.xor
(i32.mul
@ -2541,7 +2561,7 @@
(i32.const 16777619)
)
)
(func $~lib/map/Map<i16,i32>#find (; 24 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(func $~lib/map/Map<i16,i32>#find (; 28 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(set_local $2
(i32.load offset=8
(i32.add
@ -2607,7 +2627,7 @@
)
(i32.const 0)
)
(func $~lib/map/Map<i16,i32>#has (; 25 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(func $~lib/map/Map<i16,i32>#has (; 29 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(i32.ne
(call $~lib/map/Map<i16,i32>#find
(get_local $0)
@ -2625,7 +2645,7 @@
(i32.const 0)
)
)
(func $~lib/map/Map<i16,i32>#rehash (; 26 ;) (type $iiv) (param $0 i32) (param $1 i32)
(func $~lib/map/Map<i16,i32>#rehash (; 30 ;) (type $iiv) (param $0 i32) (param $1 i32)
(local $2 i32)
(local $3 i32)
(local $4 i32)
@ -2788,7 +2808,7 @@
)
)
)
(func $~lib/map/Map<i16,i32>#set (; 27 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32)
(func $~lib/map/Map<i16,i32>#set (; 31 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32)
(local $3 i32)
(local $4 i32)
(local $5 i32)
@ -2931,7 +2951,7 @@
)
)
)
(func $~lib/map/Map<i16,i32>#get (; 28 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(func $~lib/map/Map<i16,i32>#get (; 32 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(tee_local $0
(if (result i32)
(tee_local $0
@ -2956,7 +2976,7 @@
)
)
)
(func $~lib/map/Map<i16,i32>#delete (; 29 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(func $~lib/map/Map<i16,i32>#delete (; 33 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32)
(if
(i32.eqz
@ -3057,7 +3077,7 @@
)
(i32.const 1)
)
(func $std/map/test<i16,i32> (; 30 ;) (type $v)
(func $std/map/test<i16,i32> (; 34 ;) (type $v)
(local $0 i32)
(local $1 i32)
(set_local $1
@ -3543,7 +3563,7 @@
)
)
)
(func $~lib/map/Map<u16,i32>#has (; 31 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(func $~lib/map/Map<u16,i32>#has (; 35 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(i32.ne
(call $~lib/map/Map<i16,i32>#find
(get_local $0)
@ -3558,7 +3578,7 @@
(i32.const 0)
)
)
(func $~lib/map/Map<u16,i32>#rehash (; 32 ;) (type $iiv) (param $0 i32) (param $1 i32)
(func $~lib/map/Map<u16,i32>#rehash (; 36 ;) (type $iiv) (param $0 i32) (param $1 i32)
(local $2 i32)
(local $3 i32)
(local $4 i32)
@ -3721,7 +3741,7 @@
)
)
)
(func $~lib/map/Map<u16,i32>#set (; 33 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32)
(func $~lib/map/Map<u16,i32>#set (; 37 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32)
(local $3 i32)
(local $4 i32)
(local $5 i32)
@ -3861,7 +3881,7 @@
)
)
)
(func $~lib/map/Map<u16,i32>#get (; 34 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(func $~lib/map/Map<u16,i32>#get (; 38 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(tee_local $0
(if (result i32)
(tee_local $0
@ -3883,7 +3903,7 @@
)
)
)
(func $~lib/map/Map<u16,i32>#delete (; 35 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(func $~lib/map/Map<u16,i32>#delete (; 39 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32)
(if
(i32.eqz
@ -3981,7 +4001,7 @@
)
(i32.const 1)
)
(func $std/map/test<u16,i32> (; 36 ;) (type $v)
(func $std/map/test<u16,i32> (; 40 ;) (type $v)
(local $0 i32)
(local $1 i32)
(set_local $1
@ -4446,7 +4466,7 @@
)
)
)
(func $~lib/internal/hash/hash32 (; 37 ;) (type $ii) (param $0 i32) (result i32)
(func $~lib/internal/hash/hash32 (; 41 ;) (type $ii) (param $0 i32) (result i32)
(i32.mul
(i32.xor
(i32.mul
@ -4491,7 +4511,7 @@
(i32.const 16777619)
)
)
(func $~lib/map/Map<i32,i32>#find (; 38 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(func $~lib/map/Map<i32,i32>#find (; 42 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(set_local $2
(i32.load offset=8
(i32.add
@ -4554,7 +4574,7 @@
)
(i32.const 0)
)
(func $~lib/map/Map<i32,i32>#has (; 39 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(func $~lib/map/Map<i32,i32>#has (; 43 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(i32.ne
(call $~lib/map/Map<i32,i32>#find
(get_local $0)
@ -4566,7 +4586,7 @@
(i32.const 0)
)
)
(func $~lib/map/Map<i32,i32>#rehash (; 40 ;) (type $iiv) (param $0 i32) (param $1 i32)
(func $~lib/map/Map<i32,i32>#rehash (; 44 ;) (type $iiv) (param $0 i32) (param $1 i32)
(local $2 i32)
(local $3 i32)
(local $4 i32)
@ -4729,7 +4749,7 @@
)
)
)
(func $~lib/map/Map<i32,i32>#set (; 41 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32)
(func $~lib/map/Map<i32,i32>#set (; 45 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32)
(local $3 i32)
(local $4 i32)
(local $5 i32)
@ -4866,7 +4886,7 @@
)
)
)
(func $~lib/map/Map<i32,i32>#get (; 42 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(func $~lib/map/Map<i32,i32>#get (; 46 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(tee_local $0
(if (result i32)
(tee_local $0
@ -4885,7 +4905,7 @@
)
)
)
(func $~lib/map/Map<i32,i32>#delete (; 43 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(func $~lib/map/Map<i32,i32>#delete (; 47 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32)
(if
(i32.eqz
@ -4980,7 +5000,7 @@
)
(i32.const 1)
)
(func $std/map/test<i32,i32> (; 44 ;) (type $v)
(func $std/map/test<i32,i32> (; 48 ;) (type $v)
(local $0 i32)
(local $1 i32)
(set_local $1
@ -5424,7 +5444,7 @@
)
)
)
(func $std/map/test<u32,i32> (; 45 ;) (type $v)
(func $std/map/test<u32,i32> (; 49 ;) (type $v)
(local $0 i32)
(local $1 i32)
(set_local $1
@ -5868,7 +5888,7 @@
)
)
)
(func $~lib/map/Map<i64,i32>#clear (; 46 ;) (type $iv) (param $0 i32)
(func $~lib/map/Map<i64,i32>#clear (; 50 ;) (type $iv) (param $0 i32)
(i32.store
(get_local $0)
(call $~lib/arraybuffer/ArrayBuffer#constructor
@ -5902,7 +5922,7 @@
(i32.const 0)
)
)
(func $~lib/map/Map<i64,i32>#constructor (; 47 ;) (type $ii) (param $0 i32) (result i32)
(func $~lib/map/Map<i64,i32>#constructor (; 51 ;) (type $ii) (param $0 i32) (result i32)
(if
(i32.eqz
(get_local $0)
@ -5910,7 +5930,7 @@
(block
(i32.store
(tee_local $0
(call $~lib/allocator/arena/allocate_memory
(call $~lib/memory/memory.allocate
(i32.const 24)
)
)
@ -5943,7 +5963,7 @@
)
(get_local $0)
)
(func $~lib/internal/hash/hash64 (; 48 ;) (type $Ii) (param $0 i64) (result i32)
(func $~lib/internal/hash/hash64 (; 52 ;) (type $Ii) (param $0 i64) (result i32)
(local $1 i32)
(i32.mul
(i32.xor
@ -6042,7 +6062,7 @@
(i32.const 16777619)
)
)
(func $~lib/map/Map<i64,i32>#find (; 49 ;) (type $iIii) (param $0 i32) (param $1 i64) (param $2 i32) (result i32)
(func $~lib/map/Map<i64,i32>#find (; 53 ;) (type $iIii) (param $0 i32) (param $1 i64) (param $2 i32) (result i32)
(set_local $2
(i32.load offset=8
(i32.add
@ -6105,7 +6125,7 @@
)
(i32.const 0)
)
(func $~lib/map/Map<i64,i32>#has (; 50 ;) (type $iIi) (param $0 i32) (param $1 i64) (result i32)
(func $~lib/map/Map<i64,i32>#has (; 54 ;) (type $iIi) (param $0 i32) (param $1 i64) (result i32)
(i32.ne
(call $~lib/map/Map<i64,i32>#find
(get_local $0)
@ -6117,7 +6137,7 @@
(i32.const 0)
)
)
(func $~lib/map/Map<i64,i32>#rehash (; 51 ;) (type $iiv) (param $0 i32) (param $1 i32)
(func $~lib/map/Map<i64,i32>#rehash (; 55 ;) (type $iiv) (param $0 i32) (param $1 i32)
(local $2 i32)
(local $3 i32)
(local $4 i32)
@ -6280,7 +6300,7 @@
)
)
)
(func $~lib/map/Map<i64,i32>#set (; 52 ;) (type $iIiv) (param $0 i32) (param $1 i64) (param $2 i32)
(func $~lib/map/Map<i64,i32>#set (; 56 ;) (type $iIiv) (param $0 i32) (param $1 i64) (param $2 i32)
(local $3 i32)
(local $4 i32)
(local $5 i32)
@ -6417,7 +6437,7 @@
)
)
)
(func $~lib/map/Map<i64,i32>#get (; 53 ;) (type $iIi) (param $0 i32) (param $1 i64) (result i32)
(func $~lib/map/Map<i64,i32>#get (; 57 ;) (type $iIi) (param $0 i32) (param $1 i64) (result i32)
(tee_local $0
(if (result i32)
(tee_local $0
@ -6436,7 +6456,7 @@
)
)
)
(func $~lib/map/Map<i64,i32>#delete (; 54 ;) (type $iIi) (param $0 i32) (param $1 i64) (result i32)
(func $~lib/map/Map<i64,i32>#delete (; 58 ;) (type $iIi) (param $0 i32) (param $1 i64) (result i32)
(local $2 i32)
(local $3 i32)
(if
@ -6532,7 +6552,7 @@
)
(i32.const 1)
)
(func $std/map/test<i64,i32> (; 55 ;) (type $v)
(func $std/map/test<i64,i32> (; 59 ;) (type $v)
(local $0 i64)
(local $1 i32)
(set_local $1
@ -6990,7 +7010,7 @@
)
)
)
(func $std/map/test<u64,i32> (; 56 ;) (type $v)
(func $std/map/test<u64,i32> (; 60 ;) (type $v)
(local $0 i64)
(local $1 i32)
(set_local $1
@ -7448,7 +7468,7 @@
)
)
)
(func $~lib/map/Map<f32,i32>#find (; 57 ;) (type $ifii) (param $0 i32) (param $1 f32) (param $2 i32) (result i32)
(func $~lib/map/Map<f32,i32>#find (; 61 ;) (type $ifii) (param $0 i32) (param $1 f32) (param $2 i32) (result i32)
(set_local $2
(i32.load offset=8
(i32.add
@ -7511,7 +7531,7 @@
)
(i32.const 0)
)
(func $~lib/map/Map<f32,i32>#has (; 58 ;) (type $ifi) (param $0 i32) (param $1 f32) (result i32)
(func $~lib/map/Map<f32,i32>#has (; 62 ;) (type $ifi) (param $0 i32) (param $1 f32) (result i32)
(i32.ne
(call $~lib/map/Map<f32,i32>#find
(get_local $0)
@ -7525,7 +7545,7 @@
(i32.const 0)
)
)
(func $~lib/map/Map<f32,i32>#rehash (; 59 ;) (type $iiv) (param $0 i32) (param $1 i32)
(func $~lib/map/Map<f32,i32>#rehash (; 63 ;) (type $iiv) (param $0 i32) (param $1 i32)
(local $2 i32)
(local $3 i32)
(local $4 i32)
@ -7690,7 +7710,7 @@
)
)
)
(func $~lib/map/Map<f32,i32>#set (; 60 ;) (type $ifiv) (param $0 i32) (param $1 f32) (param $2 i32)
(func $~lib/map/Map<f32,i32>#set (; 64 ;) (type $ifiv) (param $0 i32) (param $1 f32) (param $2 i32)
(local $3 i32)
(local $4 i32)
(local $5 i32)
@ -7829,7 +7849,7 @@
)
)
)
(func $~lib/map/Map<f32,i32>#get (; 61 ;) (type $ifi) (param $0 i32) (param $1 f32) (result i32)
(func $~lib/map/Map<f32,i32>#get (; 65 ;) (type $ifi) (param $0 i32) (param $1 f32) (result i32)
(tee_local $0
(if (result i32)
(tee_local $0
@ -7850,7 +7870,7 @@
)
)
)
(func $~lib/map/Map<f32,i32>#delete (; 62 ;) (type $ifi) (param $0 i32) (param $1 f32) (result i32)
(func $~lib/map/Map<f32,i32>#delete (; 66 ;) (type $ifi) (param $0 i32) (param $1 f32) (result i32)
(local $2 i32)
(local $3 i32)
(if
@ -7948,7 +7968,7 @@
)
(i32.const 1)
)
(func $std/map/test<f32,i32> (; 63 ;) (type $v)
(func $std/map/test<f32,i32> (; 67 ;) (type $v)
(local $0 f32)
(local $1 i32)
(set_local $1
@ -8414,7 +8434,7 @@
)
)
)
(func $~lib/map/Map<f64,i32>#find (; 64 ;) (type $iFii) (param $0 i32) (param $1 f64) (param $2 i32) (result i32)
(func $~lib/map/Map<f64,i32>#find (; 68 ;) (type $iFii) (param $0 i32) (param $1 f64) (param $2 i32) (result i32)
(set_local $2
(i32.load offset=8
(i32.add
@ -8477,7 +8497,7 @@
)
(i32.const 0)
)
(func $~lib/map/Map<f64,i32>#has (; 65 ;) (type $iFi) (param $0 i32) (param $1 f64) (result i32)
(func $~lib/map/Map<f64,i32>#has (; 69 ;) (type $iFi) (param $0 i32) (param $1 f64) (result i32)
(i32.ne
(call $~lib/map/Map<f64,i32>#find
(get_local $0)
@ -8491,7 +8511,7 @@
(i32.const 0)
)
)
(func $~lib/map/Map<f64,i32>#rehash (; 66 ;) (type $iiv) (param $0 i32) (param $1 i32)
(func $~lib/map/Map<f64,i32>#rehash (; 70 ;) (type $iiv) (param $0 i32) (param $1 i32)
(local $2 i32)
(local $3 i32)
(local $4 i32)
@ -8656,7 +8676,7 @@
)
)
)
(func $~lib/map/Map<f64,i32>#set (; 67 ;) (type $iFiv) (param $0 i32) (param $1 f64) (param $2 i32)
(func $~lib/map/Map<f64,i32>#set (; 71 ;) (type $iFiv) (param $0 i32) (param $1 f64) (param $2 i32)
(local $3 i32)
(local $4 i32)
(local $5 i32)
@ -8795,7 +8815,7 @@
)
)
)
(func $~lib/map/Map<f64,i32>#get (; 68 ;) (type $iFi) (param $0 i32) (param $1 f64) (result i32)
(func $~lib/map/Map<f64,i32>#get (; 72 ;) (type $iFi) (param $0 i32) (param $1 f64) (result i32)
(tee_local $0
(if (result i32)
(tee_local $0
@ -8816,7 +8836,7 @@
)
)
)
(func $~lib/map/Map<f64,i32>#delete (; 69 ;) (type $iFi) (param $0 i32) (param $1 f64) (result i32)
(func $~lib/map/Map<f64,i32>#delete (; 73 ;) (type $iFi) (param $0 i32) (param $1 f64) (result i32)
(local $2 i32)
(local $3 i32)
(if
@ -8914,7 +8934,7 @@
)
(i32.const 1)
)
(func $std/map/test<f64,i32> (; 70 ;) (type $v)
(func $std/map/test<f64,i32> (; 74 ;) (type $v)
(local $0 f64)
(local $1 i32)
(set_local $1
@ -9380,15 +9400,9 @@
)
)
)
(func $start (; 71 ;) (type $v)
(func $start (; 75 ;) (type $v)
(set_global $~lib/allocator/arena/startOffset
(i32.and
(i32.add
(get_global $HEAP_BASE)
(i32.const 7)
)
(i32.const -8)
)
(i32.const 136)
)
(set_global $~lib/allocator/arena/offset
(get_global $~lib/allocator/arena/startOffset)

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -516,7 +516,7 @@
(if (result i32)
(tee_local $3
(i32.eqz
(i32.const 1)
(get_global $std/mod/js)
)
)
(get_local $3)

View File

@ -1,15 +1,23 @@
(module
(type $ifi (func (param i32 f32) (result i32)))
(type $ii (func (param i32) (result i32)))
(type $i (func (result i32)))
(type $v (func))
(global $~lib/allocator/arena/startOffset (mut i32) (i32.const 0))
(global $~lib/allocator/arena/offset (mut i32) (i32.const 0))
(global $std/new/aClass (mut i32) (i32.const 0))
(global $HEAP_BASE i32 (i32.const 8))
(memory $0 0)
(export "memory" (memory $0))
(start $start)
(func $~lib/allocator/arena/allocate_memory (; 0 ;) (type $ii) (param $0 i32) (result i32)
(func $~lib/memory/memory.size (; 0 ;) (type $i) (result i32)
(current_memory)
)
(func $~lib/memory/memory.grow (; 1 ;) (type $ii) (param $0 i32) (result i32)
(grow_memory
(get_local $0)
)
)
(func $~lib/allocator/arena/__memory_allocate (; 2 ;) (type $ii) (param $0 i32) (result i32)
(local $1 i32)
(local $2 i32)
(local $3 i32)
@ -41,14 +49,14 @@
)
(i32.shl
(tee_local $2
(current_memory)
(call $~lib/memory/memory.size)
)
(i32.const 16)
)
)
(if
(i32.lt_s
(grow_memory
(call $~lib/memory/memory.grow
(select
(get_local $2)
(tee_local $3
@ -76,7 +84,7 @@
)
(if
(i32.lt_s
(grow_memory
(call $~lib/memory/memory.grow
(get_local $3)
)
(i32.const 0)
@ -95,7 +103,12 @@
)
(i32.const 0)
)
(func $std/new/AClass#constructor (; 1 ;) (type $ifi) (param $0 i32) (param $1 f32) (result i32)
(func $~lib/memory/memory.allocate (; 3 ;) (type $ii) (param $0 i32) (result i32)
(call $~lib/allocator/arena/__memory_allocate
(get_local $0)
)
)
(func $std/new/AClass#constructor (; 4 ;) (type $ifi) (param $0 i32) (param $1 f32) (result i32)
(local $2 i32)
(if
(i32.eqz
@ -106,7 +119,7 @@
(block
(i32.store
(tee_local $0
(call $~lib/allocator/arena/allocate_memory
(call $~lib/memory/memory.allocate
(i32.const 8)
)
)
@ -133,15 +146,9 @@
)
(get_local $0)
)
(func $start (; 2 ;) (type $v)
(func $start (; 5 ;) (type $v)
(set_global $~lib/allocator/arena/startOffset
(i32.and
(i32.add
(get_global $HEAP_BASE)
(i32.const 7)
)
(i32.const -8)
)
(i32.const 8)
)
(set_global $~lib/allocator/arena/offset
(get_global $~lib/allocator/arena/startOffset)

View File

@ -1,6 +1,7 @@
(module
(type $ifi (func (param i32 f32) (result i32)))
(type $ii (func (param i32) (result i32)))
(type $i (func (result i32)))
(type $v (func))
(global $~lib/internal/allocator/AL_BITS i32 (i32.const 3))
(global $~lib/internal/allocator/AL_SIZE i32 (i32.const 8))
@ -13,7 +14,15 @@
(memory $0 0)
(export "memory" (memory $0))
(start $start)
(func $~lib/allocator/arena/allocate_memory (; 0 ;) (type $ii) (param $0 i32) (result i32)
(func $~lib/memory/memory.size (; 0 ;) (type $i) (result i32)
(current_memory)
)
(func $~lib/memory/memory.grow (; 1 ;) (type $ii) (param $0 i32) (result i32)
(grow_memory
(get_local $0)
)
)
(func $~lib/allocator/arena/__memory_allocate (; 2 ;) (type $ii) (param $0 i32) (result i32)
(local $1 i32)
(local $2 i32)
(local $3 i32)
@ -26,7 +35,7 @@
(if
(i32.gt_u
(get_local $0)
(i32.const 1073741824)
(get_global $~lib/internal/allocator/MAX_SIZE_32)
)
(unreachable)
)
@ -40,16 +49,16 @@
(get_local $1)
(get_local $0)
)
(i32.const 7)
(get_global $~lib/internal/allocator/AL_MASK)
)
(i32.xor
(i32.const 7)
(get_global $~lib/internal/allocator/AL_MASK)
(i32.const -1)
)
)
)
(set_local $3
(current_memory)
(call $~lib/memory/memory.size)
)
(if
(i32.gt_u
@ -94,14 +103,14 @@
)
(if
(i32.lt_s
(grow_memory
(call $~lib/memory/memory.grow
(get_local $5)
)
(i32.const 0)
)
(if
(i32.lt_s
(grow_memory
(call $~lib/memory/memory.grow
(get_local $4)
)
(i32.const 0)
@ -121,7 +130,14 @@
)
(i32.const 0)
)
(func $std/new/AClass#constructor (; 1 ;) (type $ifi) (param $0 i32) (param $1 f32) (result i32)
(func $~lib/memory/memory.allocate (; 3 ;) (type $ii) (param $0 i32) (result i32)
(return
(call $~lib/allocator/arena/__memory_allocate
(get_local $0)
)
)
)
(func $std/new/AClass#constructor (; 4 ;) (type $ifi) (param $0 i32) (param $1 f32) (result i32)
(local $2 i32)
(i32.store
(get_local $0)
@ -134,7 +150,7 @@
(tee_local $0
(block (result i32)
(set_local $2
(call $~lib/allocator/arena/allocate_memory
(call $~lib/memory/memory.allocate
(i32.const 8)
)
)
@ -161,15 +177,15 @@
)
(get_local $0)
)
(func $start (; 2 ;) (type $v)
(func $start (; 5 ;) (type $v)
(set_global $~lib/allocator/arena/startOffset
(i32.and
(i32.add
(get_global $HEAP_BASE)
(i32.const 7)
(get_global $~lib/internal/allocator/AL_MASK)
)
(i32.xor
(i32.const 7)
(get_global $~lib/internal/allocator/AL_MASK)
(i32.const -1)
)
)

View File

@ -1,6 +1,7 @@
(module
(type $iiii (func (param i32 i32 i32) (result i32)))
(type $ii (func (param i32) (result i32)))
(type $i (func (result i32)))
(type $iii (func (param i32 i32) (result i32)))
(type $iiiiv (func (param i32 i32 i32 i32)))
(type $FFF (func (param f64 f64) (result f64)))
@ -74,12 +75,19 @@
(global $std/operator-overloading/aii1 (mut i32) (i32.const 0))
(global $std/operator-overloading/aii2 (mut i32) (i32.const 0))
(global $std/operator-overloading/aii (mut i32) (i32.const 0))
(global $HEAP_BASE i32 (i32.const 68))
(memory $0 1)
(data (i32.const 8) "\1b\00\00\00s\00t\00d\00/\00o\00p\00e\00r\00a\00t\00o\00r\00-\00o\00v\00e\00r\00l\00o\00a\00d\00i\00n\00g\00.\00t\00s")
(export "memory" (memory $0))
(start $start)
(func $~lib/allocator/arena/allocate_memory (; 1 ;) (type $ii) (param $0 i32) (result i32)
(func $~lib/memory/memory.size (; 1 ;) (type $i) (result i32)
(current_memory)
)
(func $~lib/memory/memory.grow (; 2 ;) (type $ii) (param $0 i32) (result i32)
(grow_memory
(get_local $0)
)
)
(func $~lib/allocator/arena/__memory_allocate (; 3 ;) (type $ii) (param $0 i32) (result i32)
(local $1 i32)
(local $2 i32)
(local $3 i32)
@ -111,14 +119,14 @@
)
(i32.shl
(tee_local $2
(current_memory)
(call $~lib/memory/memory.size)
)
(i32.const 16)
)
)
(if
(i32.lt_s
(grow_memory
(call $~lib/memory/memory.grow
(select
(get_local $2)
(tee_local $3
@ -146,7 +154,7 @@
)
(if
(i32.lt_s
(grow_memory
(call $~lib/memory/memory.grow
(get_local $3)
)
(i32.const 0)
@ -165,7 +173,12 @@
)
(i32.const 0)
)
(func $std/operator-overloading/Tester#constructor (; 2 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(func $~lib/memory/memory.allocate (; 4 ;) (type $ii) (param $0 i32) (result i32)
(call $~lib/allocator/arena/__memory_allocate
(get_local $0)
)
)
(func $std/operator-overloading/Tester#constructor (; 5 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(if
(i32.eqz
(get_local $0)
@ -173,7 +186,7 @@
(block
(i32.store
(tee_local $0
(call $~lib/allocator/arena/allocate_memory
(call $~lib/memory/memory.allocate
(i32.const 8)
)
)
@ -187,7 +200,7 @@
)
(get_local $0)
)
(func $std/operator-overloading/Tester.add (; 3 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(func $std/operator-overloading/Tester.add (; 6 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(call $std/operator-overloading/Tester#constructor
(i32.const 0)
(i32.add
@ -208,7 +221,7 @@
)
)
)
(func $std/operator-overloading/Tester.sub (; 4 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(func $std/operator-overloading/Tester.sub (; 7 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(call $std/operator-overloading/Tester#constructor
(i32.const 0)
(i32.sub
@ -229,7 +242,7 @@
)
)
)
(func $std/operator-overloading/Tester.mul (; 5 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(func $std/operator-overloading/Tester.mul (; 8 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(call $std/operator-overloading/Tester#constructor
(i32.const 0)
(i32.mul
@ -250,7 +263,7 @@
)
)
)
(func $std/operator-overloading/Tester.div (; 6 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(func $std/operator-overloading/Tester.div (; 9 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(call $std/operator-overloading/Tester#constructor
(i32.const 0)
(i32.div_s
@ -271,7 +284,7 @@
)
)
)
(func $std/operator-overloading/Tester.mod (; 7 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(func $std/operator-overloading/Tester.mod (; 10 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(call $std/operator-overloading/Tester#constructor
(i32.const 0)
(i32.rem_s
@ -292,7 +305,7 @@
)
)
)
(func $~lib/math/NativeMath.scalbn (; 8 ;) (type $FiF) (param $0 f64) (param $1 i32) (result f64)
(func $~lib/math/NativeMath.scalbn (; 11 ;) (type $FiF) (param $0 f64) (param $1 i32) (result f64)
(local $2 f64)
(set_local $2
(get_local $0)
@ -406,7 +419,7 @@
)
)
)
(func $~lib/math/NativeMath.pow (; 9 ;) (type $FFF) (param $0 f64) (param $1 f64) (result f64)
(func $~lib/math/NativeMath.pow (; 12 ;) (type $FFF) (param $0 f64) (param $1 f64) (result f64)
(local $2 f64)
(local $3 f64)
(local $4 i32)
@ -1833,7 +1846,7 @@
(f64.const 1.e+300)
)
)
(func $std/operator-overloading/Tester.pow (; 10 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(func $std/operator-overloading/Tester.pow (; 13 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(call $std/operator-overloading/Tester#constructor
(i32.const 0)
(i32.trunc_s/f64
@ -1866,7 +1879,7 @@
)
)
)
(func $std/operator-overloading/Tester.and (; 11 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(func $std/operator-overloading/Tester.and (; 14 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(call $std/operator-overloading/Tester#constructor
(i32.const 0)
(i32.and
@ -1887,7 +1900,7 @@
)
)
)
(func $std/operator-overloading/Tester.or (; 12 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(func $std/operator-overloading/Tester.or (; 15 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(call $std/operator-overloading/Tester#constructor
(i32.const 0)
(i32.or
@ -1908,7 +1921,7 @@
)
)
)
(func $std/operator-overloading/Tester.xor (; 13 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(func $std/operator-overloading/Tester.xor (; 16 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(call $std/operator-overloading/Tester#constructor
(i32.const 0)
(i32.xor
@ -1929,7 +1942,7 @@
)
)
)
(func $std/operator-overloading/Tester.equals (; 14 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(func $std/operator-overloading/Tester.equals (; 17 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32)
(if
(tee_local $2
@ -1955,7 +1968,7 @@
)
(get_local $2)
)
(func $std/operator-overloading/Tester.notEquals (; 15 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(func $std/operator-overloading/Tester.notEquals (; 18 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32)
(if
(tee_local $2
@ -1981,7 +1994,7 @@
)
(get_local $2)
)
(func $std/operator-overloading/Tester.greater (; 16 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(func $std/operator-overloading/Tester.greater (; 19 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32)
(if
(tee_local $2
@ -2007,7 +2020,7 @@
)
(get_local $2)
)
(func $std/operator-overloading/Tester.greaterEquals (; 17 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(func $std/operator-overloading/Tester.greaterEquals (; 20 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32)
(if
(tee_local $2
@ -2033,7 +2046,7 @@
)
(get_local $2)
)
(func $std/operator-overloading/Tester.less (; 18 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(func $std/operator-overloading/Tester.less (; 21 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32)
(if
(tee_local $2
@ -2059,7 +2072,7 @@
)
(get_local $2)
)
(func $std/operator-overloading/Tester.lessEquals (; 19 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(func $std/operator-overloading/Tester.lessEquals (; 22 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32)
(if
(tee_local $2
@ -2085,7 +2098,7 @@
)
(get_local $2)
)
(func $std/operator-overloading/Tester.shr (; 20 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(func $std/operator-overloading/Tester.shr (; 23 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(call $std/operator-overloading/Tester#constructor
(i32.const 0)
(i32.shr_s
@ -2102,7 +2115,7 @@
)
)
)
(func $std/operator-overloading/Tester.shu (; 21 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(func $std/operator-overloading/Tester.shu (; 24 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(call $std/operator-overloading/Tester#constructor
(i32.const 0)
(i32.shr_u
@ -2119,7 +2132,7 @@
)
)
)
(func $std/operator-overloading/Tester.shl (; 22 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(func $std/operator-overloading/Tester.shl (; 25 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(call $std/operator-overloading/Tester#constructor
(i32.const 0)
(i32.shl
@ -2136,7 +2149,7 @@
)
)
)
(func $std/operator-overloading/Tester.pos (; 23 ;) (type $ii) (param $0 i32) (result i32)
(func $std/operator-overloading/Tester.pos (; 26 ;) (type $ii) (param $0 i32) (result i32)
(call $std/operator-overloading/Tester#constructor
(i32.const 0)
(i32.load
@ -2147,7 +2160,7 @@
)
)
)
(func $std/operator-overloading/Tester.neg (; 24 ;) (type $ii) (param $0 i32) (result i32)
(func $std/operator-overloading/Tester.neg (; 27 ;) (type $ii) (param $0 i32) (result i32)
(call $std/operator-overloading/Tester#constructor
(i32.const 0)
(i32.sub
@ -2164,7 +2177,7 @@
)
)
)
(func $std/operator-overloading/Tester.not (; 25 ;) (type $ii) (param $0 i32) (result i32)
(func $std/operator-overloading/Tester.not (; 28 ;) (type $ii) (param $0 i32) (result i32)
(call $std/operator-overloading/Tester#constructor
(i32.const 0)
(i32.xor
@ -2181,7 +2194,7 @@
)
)
)
(func $std/operator-overloading/Tester.excl (; 26 ;) (type $ii) (param $0 i32) (result i32)
(func $std/operator-overloading/Tester.excl (; 29 ;) (type $ii) (param $0 i32) (result i32)
(local $1 i32)
(if
(tee_local $1
@ -2201,7 +2214,7 @@
)
(get_local $1)
)
(func $std/operator-overloading/Tester#inc (; 27 ;) (type $ii) (param $0 i32) (result i32)
(func $std/operator-overloading/Tester#inc (; 30 ;) (type $ii) (param $0 i32) (result i32)
(i32.store
(get_local $0)
(i32.add
@ -2222,7 +2235,7 @@
)
(get_local $0)
)
(func $std/operator-overloading/Tester#dec (; 28 ;) (type $ii) (param $0 i32) (result i32)
(func $std/operator-overloading/Tester#dec (; 31 ;) (type $ii) (param $0 i32) (result i32)
(i32.store
(get_local $0)
(i32.sub
@ -2243,17 +2256,11 @@
)
(get_local $0)
)
(func $start (; 29 ;) (type $v)
(func $start (; 32 ;) (type $v)
(local $0 i32)
(local $1 i32)
(set_global $~lib/allocator/arena/startOffset
(i32.and
(i32.add
(get_global $HEAP_BASE)
(i32.const 7)
)
(i32.const -8)
)
(i32.const 72)
)
(set_global $~lib/allocator/arena/offset
(get_global $~lib/allocator/arena/startOffset)

View File

@ -1,6 +1,7 @@
(module
(type $iiii (func (param i32 i32 i32) (result i32)))
(type $ii (func (param i32) (result i32)))
(type $i (func (result i32)))
(type $iii (func (param i32 i32) (result i32)))
(type $iiiiv (func (param i32 i32 i32 i32)))
(type $FFF (func (param f64 f64) (result f64)))
@ -47,6 +48,7 @@
(global $std/operator-overloading/eq3 (mut i32) (i32.const 0))
(global $std/operator-overloading/eq4 (mut i32) (i32.const 0))
(global $std/operator-overloading/eqf (mut i32) (i32.const 0))
(global $i32.MAX_VALUE i32 (i32.const 2147483647))
(global $std/operator-overloading/gt1 (mut i32) (i32.const 0))
(global $std/operator-overloading/gt2 (mut i32) (i32.const 0))
(global $std/operator-overloading/gt (mut i32) (i32.const 0))
@ -84,7 +86,15 @@
(data (i32.const 8) "\1b\00\00\00s\00t\00d\00/\00o\00p\00e\00r\00a\00t\00o\00r\00-\00o\00v\00e\00r\00l\00o\00a\00d\00i\00n\00g\00.\00t\00s\00")
(export "memory" (memory $0))
(start $start)
(func $~lib/allocator/arena/allocate_memory (; 1 ;) (type $ii) (param $0 i32) (result i32)
(func $~lib/memory/memory.size (; 1 ;) (type $i) (result i32)
(current_memory)
)
(func $~lib/memory/memory.grow (; 2 ;) (type $ii) (param $0 i32) (result i32)
(grow_memory
(get_local $0)
)
)
(func $~lib/allocator/arena/__memory_allocate (; 3 ;) (type $ii) (param $0 i32) (result i32)
(local $1 i32)
(local $2 i32)
(local $3 i32)
@ -97,7 +107,7 @@
(if
(i32.gt_u
(get_local $0)
(i32.const 1073741824)
(get_global $~lib/internal/allocator/MAX_SIZE_32)
)
(unreachable)
)
@ -111,16 +121,16 @@
(get_local $1)
(get_local $0)
)
(i32.const 7)
(get_global $~lib/internal/allocator/AL_MASK)
)
(i32.xor
(i32.const 7)
(get_global $~lib/internal/allocator/AL_MASK)
(i32.const -1)
)
)
)
(set_local $3
(current_memory)
(call $~lib/memory/memory.size)
)
(if
(i32.gt_u
@ -165,14 +175,14 @@
)
(if
(i32.lt_s
(grow_memory
(call $~lib/memory/memory.grow
(get_local $5)
)
(i32.const 0)
)
(if
(i32.lt_s
(grow_memory
(call $~lib/memory/memory.grow
(get_local $4)
)
(i32.const 0)
@ -192,7 +202,14 @@
)
(i32.const 0)
)
(func $std/operator-overloading/Tester#constructor (; 2 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(func $~lib/memory/memory.allocate (; 4 ;) (type $ii) (param $0 i32) (result i32)
(return
(call $~lib/allocator/arena/__memory_allocate
(get_local $0)
)
)
)
(func $std/operator-overloading/Tester#constructor (; 5 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(local $3 i32)
(tee_local $0
(if (result i32)
@ -201,7 +218,7 @@
(tee_local $0
(block (result i32)
(set_local $3
(call $~lib/allocator/arena/allocate_memory
(call $~lib/memory/memory.allocate
(i32.const 8)
)
)
@ -219,7 +236,7 @@
)
)
)
(func $std/operator-overloading/Tester.add (; 3 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(func $std/operator-overloading/Tester.add (; 6 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(call $std/operator-overloading/Tester#constructor
(i32.const 0)
(i32.add
@ -240,7 +257,7 @@
)
)
)
(func $std/operator-overloading/Tester.sub (; 4 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(func $std/operator-overloading/Tester.sub (; 7 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(call $std/operator-overloading/Tester#constructor
(i32.const 0)
(i32.sub
@ -261,7 +278,7 @@
)
)
)
(func $std/operator-overloading/Tester.mul (; 5 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(func $std/operator-overloading/Tester.mul (; 8 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(call $std/operator-overloading/Tester#constructor
(i32.const 0)
(i32.mul
@ -282,7 +299,7 @@
)
)
)
(func $std/operator-overloading/Tester.div (; 6 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(func $std/operator-overloading/Tester.div (; 9 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(call $std/operator-overloading/Tester#constructor
(i32.const 0)
(i32.div_s
@ -303,7 +320,7 @@
)
)
)
(func $std/operator-overloading/Tester.mod (; 7 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(func $std/operator-overloading/Tester.mod (; 10 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(call $std/operator-overloading/Tester#constructor
(i32.const 0)
(i32.rem_s
@ -324,7 +341,7 @@
)
)
)
(func $~lib/math/NativeMath.scalbn (; 8 ;) (type $FiF) (param $0 f64) (param $1 i32) (result f64)
(func $~lib/math/NativeMath.scalbn (; 11 ;) (type $FiF) (param $0 f64) (param $1 i32) (result f64)
(local $2 f64)
(set_local $2
(get_local $0)
@ -442,7 +459,7 @@
)
)
)
(func $~lib/math/NativeMath.pow (; 9 ;) (type $FFF) (param $0 f64) (param $1 f64) (result f64)
(func $~lib/math/NativeMath.pow (; 12 ;) (type $FFF) (param $0 f64) (param $1 f64) (result f64)
(local $2 i64)
(local $3 i32)
(local $4 i32)
@ -2000,7 +2017,7 @@
(get_local $13)
)
)
(func $std/operator-overloading/Tester.pow (; 10 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(func $std/operator-overloading/Tester.pow (; 13 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(call $std/operator-overloading/Tester#constructor
(i32.const 0)
(i32.trunc_s/f64
@ -2033,7 +2050,7 @@
)
)
)
(func $std/operator-overloading/Tester.and (; 11 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(func $std/operator-overloading/Tester.and (; 14 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(call $std/operator-overloading/Tester#constructor
(i32.const 0)
(i32.and
@ -2054,7 +2071,7 @@
)
)
)
(func $std/operator-overloading/Tester.or (; 12 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(func $std/operator-overloading/Tester.or (; 15 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(call $std/operator-overloading/Tester#constructor
(i32.const 0)
(i32.or
@ -2075,7 +2092,7 @@
)
)
)
(func $std/operator-overloading/Tester.xor (; 13 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(func $std/operator-overloading/Tester.xor (; 16 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(call $std/operator-overloading/Tester#constructor
(i32.const 0)
(i32.xor
@ -2096,7 +2113,7 @@
)
)
)
(func $std/operator-overloading/Tester.equals (; 14 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(func $std/operator-overloading/Tester.equals (; 17 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32)
(if (result i32)
(tee_local $2
@ -2120,7 +2137,7 @@
(get_local $2)
)
)
(func $std/operator-overloading/Tester.notEquals (; 15 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(func $std/operator-overloading/Tester.notEquals (; 18 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32)
(if (result i32)
(tee_local $2
@ -2144,7 +2161,7 @@
(get_local $2)
)
)
(func $std/operator-overloading/Tester.greater (; 16 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(func $std/operator-overloading/Tester.greater (; 19 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32)
(if (result i32)
(tee_local $2
@ -2168,7 +2185,7 @@
(get_local $2)
)
)
(func $std/operator-overloading/Tester.greaterEquals (; 17 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(func $std/operator-overloading/Tester.greaterEquals (; 20 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32)
(if (result i32)
(tee_local $2
@ -2192,7 +2209,7 @@
(get_local $2)
)
)
(func $std/operator-overloading/Tester.less (; 18 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(func $std/operator-overloading/Tester.less (; 21 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32)
(if (result i32)
(tee_local $2
@ -2216,7 +2233,7 @@
(get_local $2)
)
)
(func $std/operator-overloading/Tester.lessEquals (; 19 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(func $std/operator-overloading/Tester.lessEquals (; 22 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32)
(if (result i32)
(tee_local $2
@ -2240,7 +2257,7 @@
(get_local $2)
)
)
(func $std/operator-overloading/Tester.shr (; 20 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(func $std/operator-overloading/Tester.shr (; 23 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(call $std/operator-overloading/Tester#constructor
(i32.const 0)
(i32.shr_s
@ -2257,7 +2274,7 @@
)
)
)
(func $std/operator-overloading/Tester.shu (; 21 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(func $std/operator-overloading/Tester.shu (; 24 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(call $std/operator-overloading/Tester#constructor
(i32.const 0)
(i32.shr_u
@ -2274,7 +2291,7 @@
)
)
)
(func $std/operator-overloading/Tester.shl (; 22 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(func $std/operator-overloading/Tester.shl (; 25 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(call $std/operator-overloading/Tester#constructor
(i32.const 0)
(i32.shl
@ -2291,7 +2308,7 @@
)
)
)
(func $std/operator-overloading/Tester.pos (; 23 ;) (type $ii) (param $0 i32) (result i32)
(func $std/operator-overloading/Tester.pos (; 26 ;) (type $ii) (param $0 i32) (result i32)
(call $std/operator-overloading/Tester#constructor
(i32.const 0)
(i32.load
@ -2302,7 +2319,7 @@
)
)
)
(func $std/operator-overloading/Tester.neg (; 24 ;) (type $ii) (param $0 i32) (result i32)
(func $std/operator-overloading/Tester.neg (; 27 ;) (type $ii) (param $0 i32) (result i32)
(call $std/operator-overloading/Tester#constructor
(i32.const 0)
(i32.sub
@ -2319,7 +2336,7 @@
)
)
)
(func $std/operator-overloading/Tester.not (; 25 ;) (type $ii) (param $0 i32) (result i32)
(func $std/operator-overloading/Tester.not (; 28 ;) (type $ii) (param $0 i32) (result i32)
(call $std/operator-overloading/Tester#constructor
(i32.const 0)
(i32.xor
@ -2336,7 +2353,7 @@
)
)
)
(func $std/operator-overloading/Tester.excl (; 26 ;) (type $ii) (param $0 i32) (result i32)
(func $std/operator-overloading/Tester.excl (; 29 ;) (type $ii) (param $0 i32) (result i32)
(local $1 i32)
(if (result i32)
(tee_local $1
@ -2354,7 +2371,7 @@
(get_local $1)
)
)
(func $std/operator-overloading/Tester#inc (; 27 ;) (type $ii) (param $0 i32) (result i32)
(func $std/operator-overloading/Tester#inc (; 30 ;) (type $ii) (param $0 i32) (result i32)
(i32.store
(get_local $0)
(i32.add
@ -2375,7 +2392,7 @@
)
(get_local $0)
)
(func $std/operator-overloading/Tester#dec (; 28 ;) (type $ii) (param $0 i32) (result i32)
(func $std/operator-overloading/Tester#dec (; 31 ;) (type $ii) (param $0 i32) (result i32)
(i32.store
(get_local $0)
(i32.sub
@ -2396,7 +2413,7 @@
)
(get_local $0)
)
(func $std/operator-overloading/TesterInlineStatic#constructor (; 29 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(func $std/operator-overloading/TesterInlineStatic#constructor (; 32 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(local $3 i32)
(tee_local $0
(if (result i32)
@ -2405,7 +2422,7 @@
(tee_local $0
(block (result i32)
(set_local $3
(call $~lib/allocator/arena/allocate_memory
(call $~lib/memory/memory.allocate
(i32.const 8)
)
)
@ -2423,7 +2440,7 @@
)
)
)
(func $std/operator-overloading/TesterInlineInstance#constructor (; 30 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(func $std/operator-overloading/TesterInlineInstance#constructor (; 33 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(local $3 i32)
(tee_local $0
(if (result i32)
@ -2432,7 +2449,7 @@
(tee_local $0
(block (result i32)
(set_local $3
(call $~lib/allocator/arena/allocate_memory
(call $~lib/memory/memory.allocate
(i32.const 8)
)
)
@ -2450,17 +2467,17 @@
)
)
)
(func $start (; 31 ;) (type $v)
(func $start (; 34 ;) (type $v)
(local $0 i32)
(local $1 i32)
(set_global $~lib/allocator/arena/startOffset
(i32.and
(i32.add
(get_global $HEAP_BASE)
(i32.const 7)
(get_global $~lib/internal/allocator/AL_MASK)
)
(i32.xor
(i32.const 7)
(get_global $~lib/internal/allocator/AL_MASK)
(i32.const -1)
)
)
@ -3042,7 +3059,7 @@
(call $std/operator-overloading/Tester#constructor
(i32.const 0)
(i32.const 2)
(i32.const 2147483647)
(get_global $i32.MAX_VALUE)
)
)
(set_global $std/operator-overloading/gt2

View File

@ -1,49 +1,25 @@
(module
(type $iii (func (param i32 i32) (result i32)))
(type $iv (func (param i32)))
(type $iiiiv (func (param i32 i32 i32 i32)))
(type $v (func))
(type $iv (func (param i32)))
(import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32)))
(global $~argc (mut i32) (i32.const 0))
(global $std/pointer/one (mut i32) (i32.const 0))
(global $std/pointer/two (mut i32) (i32.const 0))
(global $std/pointer/add (mut i32) (i32.const 0))
(global $std/pointer/sub (mut i32) (i32.const 0))
(global $std/pointer/nextOne (mut i32) (i32.const 0))
(global $~argc (mut i32) (i32.const 0))
(memory $0 1)
(data (i32.const 8) "\0e\00\00\00s\00t\00d\00/\00p\00o\00i\00n\00t\00e\00r\00.\00t\00s")
(export "memory" (memory $0))
(export "_setargc" (func $~setargc))
(export "Pointer<Entry>#constructor" (func $std/pointer/Pointer<Entry>#constructor|trampoline))
(export "memory" (memory $0))
(start $start)
(func $std/pointer/Pointer<Entry>#constructor (; 1 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(get_local $1)
)
(func $std/pointer/Pointer<Entry>#constructor|trampoline (; 2 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(block $1of1
(block $0of1
(block $oob
(br_table $0of1 $1of1 $oob
(get_global $~argc)
)
)
(unreachable)
)
(set_local $1
(i32.const 0)
)
)
(call $std/pointer/Pointer<Entry>#constructor
(get_local $0)
(get_local $1)
)
)
(func $~setargc (; 3 ;) (type $iv) (param $0 i32)
(set_global $~argc
(get_local $0)
)
)
(func $start (; 4 ;) (type $v)
(func $start (; 2 ;) (type $v)
(set_global $std/pointer/one
(call $std/pointer/Pointer<Entry>#constructor
(i32.const 0)
@ -301,4 +277,28 @@
)
)
)
(func $std/pointer/Pointer<Entry>#constructor|trampoline (; 3 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(block $1of1
(block $0of1
(block $outOfRange
(br_table $0of1 $1of1 $outOfRange
(get_global $~argc)
)
)
(unreachable)
)
(set_local $1
(i32.const 0)
)
)
(call $std/pointer/Pointer<Entry>#constructor
(get_local $0)
(get_local $1)
)
)
(func $~setargc (; 4 ;) (type $iv) (param $0 i32)
(set_global $~argc
(get_local $0)
)
)
)

View File

@ -1,50 +1,26 @@
(module
(type $iii (func (param i32 i32) (result i32)))
(type $iv (func (param i32)))
(type $iiiiv (func (param i32 i32 i32 i32)))
(type $v (func))
(type $iv (func (param i32)))
(import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32)))
(global $~argc (mut i32) (i32.const 0))
(global $std/pointer/one (mut i32) (i32.const 0))
(global $std/pointer/two (mut i32) (i32.const 0))
(global $std/pointer/add (mut i32) (i32.const 0))
(global $std/pointer/sub (mut i32) (i32.const 0))
(global $std/pointer/nextOne (mut i32) (i32.const 0))
(global $HEAP_BASE i32 (i32.const 40))
(global $~argc (mut i32) (i32.const 0))
(memory $0 1)
(data (i32.const 8) "\0e\00\00\00s\00t\00d\00/\00p\00o\00i\00n\00t\00e\00r\00.\00t\00s\00")
(export "memory" (memory $0))
(export "_setargc" (func $~setargc))
(export "Pointer<Entry>#constructor" (func $std/pointer/Pointer<Entry>#constructor|trampoline))
(export "memory" (memory $0))
(start $start)
(func $std/pointer/Pointer<Entry>#constructor (; 1 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(get_local $1)
)
(func $std/pointer/Pointer<Entry>#constructor|trampoline (; 2 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(block $1of1
(block $0of1
(block $oob
(br_table $0of1 $1of1 $oob
(get_global $~argc)
)
)
(unreachable)
)
(set_local $1
(i32.const 0)
)
)
(call $std/pointer/Pointer<Entry>#constructor
(get_local $0)
(get_local $1)
)
)
(func $~setargc (; 3 ;) (type $iv) (param $0 i32)
(set_global $~argc
(get_local $0)
)
)
(func $start (; 4 ;) (type $v)
(func $start (; 2 ;) (type $v)
(local $0 i32)
(local $1 i32)
(set_global $std/pointer/one
@ -433,4 +409,28 @@
)
)
)
(func $std/pointer/Pointer<Entry>#constructor|trampoline (; 3 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(block $1of1
(block $0of1
(block $outOfRange
(br_table $0of1 $1of1 $outOfRange
(get_global $~argc)
)
)
(unreachable)
)
(set_local $1
(i32.const 0)
)
)
(call $std/pointer/Pointer<Entry>#constructor
(get_local $0)
(get_local $1)
)
)
(func $~setargc (; 4 ;) (type $iv) (param $0 i32)
(set_global $~argc
(get_local $0)
)
)
)

View File

@ -1,6 +1,7 @@
(module
(type $v (func))
(type $ii (func (param i32) (result i32)))
(type $i (func (result i32)))
(type $iv (func (param i32)))
(type $iiii (func (param i32 i32 i32) (result i32)))
(type $iiiiv (func (param i32 i32 i32 i32)))
@ -22,14 +23,21 @@
(import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32)))
(global $~lib/allocator/arena/startOffset (mut i32) (i32.const 0))
(global $~lib/allocator/arena/offset (mut i32) (i32.const 0))
(global $HEAP_BASE i32 (i32.const 136))
(memory $0 1)
(data (i32.const 8) "\13\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s")
(data (i32.const 52) "\1c\00\00\00~\00l\00i\00b\00/\00i\00n\00t\00e\00r\00n\00a\00l\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s")
(data (i32.const 112) "\n\00\00\00s\00t\00d\00/\00s\00e\00t\00.\00t\00s")
(export "memory" (memory $0))
(start $start)
(func $~lib/allocator/arena/allocate_memory (; 1 ;) (type $ii) (param $0 i32) (result i32)
(func $~lib/memory/memory.size (; 1 ;) (type $i) (result i32)
(current_memory)
)
(func $~lib/memory/memory.grow (; 2 ;) (type $ii) (param $0 i32) (result i32)
(grow_memory
(get_local $0)
)
)
(func $~lib/allocator/arena/__memory_allocate (; 3 ;) (type $ii) (param $0 i32) (result i32)
(local $1 i32)
(local $2 i32)
(local $3 i32)
@ -61,14 +69,14 @@
)
(i32.shl
(tee_local $2
(current_memory)
(call $~lib/memory/memory.size)
)
(i32.const 16)
)
)
(if
(i32.lt_s
(grow_memory
(call $~lib/memory/memory.grow
(select
(get_local $2)
(tee_local $3
@ -96,7 +104,7 @@
)
(if
(i32.lt_s
(grow_memory
(call $~lib/memory/memory.grow
(get_local $3)
)
(i32.const 0)
@ -115,7 +123,12 @@
)
(i32.const 0)
)
(func $~lib/internal/arraybuffer/computeSize (; 2 ;) (type $ii) (param $0 i32) (result i32)
(func $~lib/memory/memory.allocate (; 4 ;) (type $ii) (param $0 i32) (result i32)
(call $~lib/allocator/arena/__memory_allocate
(get_local $0)
)
)
(func $~lib/internal/arraybuffer/computeSize (; 5 ;) (type $ii) (param $0 i32) (result i32)
(i32.shl
(i32.const 1)
(i32.sub
@ -129,7 +142,7 @@
)
)
)
(func $~lib/internal/arraybuffer/allocUnsafe (; 3 ;) (type $ii) (param $0 i32) (result i32)
(func $~lib/internal/arraybuffer/allocUnsafe (; 6 ;) (type $ii) (param $0 i32) (result i32)
(local $1 i32)
(if
(i32.gt_u
@ -148,7 +161,7 @@
)
(i32.store
(tee_local $1
(call $~lib/allocator/arena/allocate_memory
(call $~lib/memory/memory.allocate
(call $~lib/internal/arraybuffer/computeSize
(get_local $0)
)
@ -158,7 +171,7 @@
)
(get_local $1)
)
(func $~lib/memory/set_memory (; 4 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32)
(func $~lib/memory/memset (; 7 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32)
(local $3 i32)
(local $4 i64)
(if
@ -488,7 +501,14 @@
)
)
)
(func $~lib/arraybuffer/ArrayBuffer#constructor (; 5 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(func $~lib/memory/memory.fill (; 8 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32)
(call $~lib/memory/memset
(get_local $0)
(get_local $1)
(get_local $2)
)
)
(func $~lib/arraybuffer/ArrayBuffer#constructor (; 9 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(local $3 i32)
(if
(i32.gt_u
@ -517,7 +537,7 @@
(i32.const 1)
)
)
(call $~lib/memory/set_memory
(call $~lib/memory/memory.fill
(i32.add
(get_local $3)
(i32.const 8)
@ -528,7 +548,7 @@
)
(get_local $3)
)
(func $~lib/set/Set<i8>#clear (; 6 ;) (type $iv) (param $0 i32)
(func $~lib/set/Set<i8>#clear (; 10 ;) (type $iv) (param $0 i32)
(i32.store
(get_local $0)
(call $~lib/arraybuffer/ArrayBuffer#constructor
@ -562,7 +582,7 @@
(i32.const 0)
)
)
(func $~lib/set/Set<i8>#constructor (; 7 ;) (type $ii) (param $0 i32) (result i32)
(func $~lib/set/Set<i8>#constructor (; 11 ;) (type $ii) (param $0 i32) (result i32)
(if
(i32.eqz
(get_local $0)
@ -570,7 +590,7 @@
(block
(i32.store
(tee_local $0
(call $~lib/allocator/arena/allocate_memory
(call $~lib/memory/memory.allocate
(i32.const 24)
)
)
@ -603,7 +623,7 @@
)
(get_local $0)
)
(func $~lib/internal/hash/hash8 (; 8 ;) (type $ii) (param $0 i32) (result i32)
(func $~lib/internal/hash/hash8 (; 12 ;) (type $ii) (param $0 i32) (result i32)
(i32.mul
(i32.xor
(get_local $0)
@ -612,7 +632,7 @@
(i32.const 16777619)
)
)
(func $~lib/internal/hash/hash<i8> (; 9 ;) (type $ii) (param $0 i32) (result i32)
(func $~lib/internal/hash/hash<i8> (; 13 ;) (type $ii) (param $0 i32) (result i32)
(call $~lib/internal/hash/hash8
(i32.shr_s
(i32.shl
@ -623,7 +643,7 @@
)
)
)
(func $~lib/set/Set<i8>#find (; 10 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(func $~lib/set/Set<i8>#find (; 14 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(set_local $2
(i32.load offset=8
(i32.add
@ -689,7 +709,7 @@
)
(i32.const 0)
)
(func $~lib/set/Set<i8>#has (; 11 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(func $~lib/set/Set<i8>#has (; 15 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(i32.ne
(call $~lib/set/Set<i8>#find
(get_local $0)
@ -701,7 +721,7 @@
(i32.const 0)
)
)
(func $~lib/set/Set<i8>#rehash (; 12 ;) (type $iiv) (param $0 i32) (param $1 i32)
(func $~lib/set/Set<i8>#rehash (; 16 ;) (type $iiv) (param $0 i32) (param $1 i32)
(local $2 i32)
(local $3 i32)
(local $4 i32)
@ -858,7 +878,7 @@
)
)
)
(func $~lib/set/Set<i8>#add (; 13 ;) (type $iiv) (param $0 i32) (param $1 i32)
(func $~lib/set/Set<i8>#add (; 17 ;) (type $iiv) (param $0 i32) (param $1 i32)
(local $2 i32)
(local $3 i32)
(local $4 i32)
@ -987,12 +1007,12 @@
)
)
)
(func $~lib/set/Set<i8>#get:size (; 14 ;) (type $ii) (param $0 i32) (result i32)
(func $~lib/set/Set<i8>#get:size (; 18 ;) (type $ii) (param $0 i32) (result i32)
(i32.load offset=20
(get_local $0)
)
)
(func $~lib/set/Set<i8>#delete (; 15 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(func $~lib/set/Set<i8>#delete (; 19 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32)
(if
(i32.eqz
@ -1093,7 +1113,7 @@
)
(i32.const 1)
)
(func $std/set/test<i8> (; 16 ;) (type $v)
(func $std/set/test<i8> (; 20 ;) (type $v)
(local $0 i32)
(local $1 i32)
(set_local $1
@ -1437,7 +1457,7 @@
)
)
)
(func $~lib/internal/hash/hash<u8> (; 17 ;) (type $ii) (param $0 i32) (result i32)
(func $~lib/internal/hash/hash<u8> (; 21 ;) (type $ii) (param $0 i32) (result i32)
(call $~lib/internal/hash/hash8
(i32.and
(get_local $0)
@ -1445,7 +1465,7 @@
)
)
)
(func $~lib/set/Set<u8>#has (; 18 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(func $~lib/set/Set<u8>#has (; 22 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(i32.ne
(call $~lib/set/Set<i8>#find
(get_local $0)
@ -1457,7 +1477,7 @@
(i32.const 0)
)
)
(func $~lib/set/Set<u8>#rehash (; 19 ;) (type $iiv) (param $0 i32) (param $1 i32)
(func $~lib/set/Set<u8>#rehash (; 23 ;) (type $iiv) (param $0 i32) (param $1 i32)
(local $2 i32)
(local $3 i32)
(local $4 i32)
@ -1614,7 +1634,7 @@
)
)
)
(func $~lib/set/Set<u8>#add (; 20 ;) (type $iiv) (param $0 i32) (param $1 i32)
(func $~lib/set/Set<u8>#add (; 24 ;) (type $iiv) (param $0 i32) (param $1 i32)
(local $2 i32)
(local $3 i32)
(local $4 i32)
@ -1743,7 +1763,7 @@
)
)
)
(func $~lib/set/Set<u8>#delete (; 21 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(func $~lib/set/Set<u8>#delete (; 25 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32)
(if
(i32.eqz
@ -1841,7 +1861,7 @@
)
(i32.const 1)
)
(func $std/set/test<u8> (; 22 ;) (type $v)
(func $std/set/test<u8> (; 26 ;) (type $v)
(local $0 i32)
(local $1 i32)
(set_local $1
@ -2185,7 +2205,7 @@
)
)
)
(func $~lib/internal/hash/hash16 (; 23 ;) (type $ii) (param $0 i32) (result i32)
(func $~lib/internal/hash/hash16 (; 27 ;) (type $ii) (param $0 i32) (result i32)
(i32.mul
(i32.xor
(i32.mul
@ -2206,7 +2226,7 @@
(i32.const 16777619)
)
)
(func $~lib/internal/hash/hash<i16> (; 24 ;) (type $ii) (param $0 i32) (result i32)
(func $~lib/internal/hash/hash<i16> (; 28 ;) (type $ii) (param $0 i32) (result i32)
(call $~lib/internal/hash/hash16
(i32.shr_s
(i32.shl
@ -2217,7 +2237,7 @@
)
)
)
(func $~lib/set/Set<i16>#find (; 25 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(func $~lib/set/Set<i16>#find (; 29 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(set_local $2
(i32.load offset=8
(i32.add
@ -2283,7 +2303,7 @@
)
(i32.const 0)
)
(func $~lib/set/Set<i16>#has (; 26 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(func $~lib/set/Set<i16>#has (; 30 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(i32.ne
(call $~lib/set/Set<i16>#find
(get_local $0)
@ -2295,7 +2315,7 @@
(i32.const 0)
)
)
(func $~lib/set/Set<i16>#rehash (; 27 ;) (type $iiv) (param $0 i32) (param $1 i32)
(func $~lib/set/Set<i16>#rehash (; 31 ;) (type $iiv) (param $0 i32) (param $1 i32)
(local $2 i32)
(local $3 i32)
(local $4 i32)
@ -2452,7 +2472,7 @@
)
)
)
(func $~lib/set/Set<i16>#add (; 28 ;) (type $iiv) (param $0 i32) (param $1 i32)
(func $~lib/set/Set<i16>#add (; 32 ;) (type $iiv) (param $0 i32) (param $1 i32)
(local $2 i32)
(local $3 i32)
(local $4 i32)
@ -2581,7 +2601,7 @@
)
)
)
(func $~lib/set/Set<i16>#delete (; 29 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(func $~lib/set/Set<i16>#delete (; 33 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32)
(if
(i32.eqz
@ -2682,7 +2702,7 @@
)
(i32.const 1)
)
(func $std/set/test<i16> (; 30 ;) (type $v)
(func $std/set/test<i16> (; 34 ;) (type $v)
(local $0 i32)
(local $1 i32)
(set_local $1
@ -3026,7 +3046,7 @@
)
)
)
(func $~lib/internal/hash/hash<u16> (; 31 ;) (type $ii) (param $0 i32) (result i32)
(func $~lib/internal/hash/hash<u16> (; 35 ;) (type $ii) (param $0 i32) (result i32)
(call $~lib/internal/hash/hash16
(i32.and
(get_local $0)
@ -3034,7 +3054,7 @@
)
)
)
(func $~lib/set/Set<u16>#has (; 32 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(func $~lib/set/Set<u16>#has (; 36 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(i32.ne
(call $~lib/set/Set<i16>#find
(get_local $0)
@ -3046,7 +3066,7 @@
(i32.const 0)
)
)
(func $~lib/set/Set<u16>#rehash (; 33 ;) (type $iiv) (param $0 i32) (param $1 i32)
(func $~lib/set/Set<u16>#rehash (; 37 ;) (type $iiv) (param $0 i32) (param $1 i32)
(local $2 i32)
(local $3 i32)
(local $4 i32)
@ -3203,7 +3223,7 @@
)
)
)
(func $~lib/set/Set<u16>#add (; 34 ;) (type $iiv) (param $0 i32) (param $1 i32)
(func $~lib/set/Set<u16>#add (; 38 ;) (type $iiv) (param $0 i32) (param $1 i32)
(local $2 i32)
(local $3 i32)
(local $4 i32)
@ -3332,7 +3352,7 @@
)
)
)
(func $~lib/set/Set<u16>#delete (; 35 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(func $~lib/set/Set<u16>#delete (; 39 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32)
(if
(i32.eqz
@ -3430,7 +3450,7 @@
)
(i32.const 1)
)
(func $std/set/test<u16> (; 36 ;) (type $v)
(func $std/set/test<u16> (; 40 ;) (type $v)
(local $0 i32)
(local $1 i32)
(set_local $1
@ -3774,7 +3794,7 @@
)
)
)
(func $~lib/internal/hash/hash32 (; 37 ;) (type $ii) (param $0 i32) (result i32)
(func $~lib/internal/hash/hash32 (; 41 ;) (type $ii) (param $0 i32) (result i32)
(i32.mul
(i32.xor
(i32.mul
@ -3819,12 +3839,12 @@
(i32.const 16777619)
)
)
(func $~lib/internal/hash/hash<i32> (; 38 ;) (type $ii) (param $0 i32) (result i32)
(func $~lib/internal/hash/hash<i32> (; 42 ;) (type $ii) (param $0 i32) (result i32)
(call $~lib/internal/hash/hash32
(get_local $0)
)
)
(func $~lib/set/Set<i32>#find (; 39 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(func $~lib/set/Set<i32>#find (; 43 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(set_local $2
(i32.load offset=8
(i32.add
@ -3887,7 +3907,7 @@
)
(i32.const 0)
)
(func $~lib/set/Set<i32>#has (; 40 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(func $~lib/set/Set<i32>#has (; 44 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(i32.ne
(call $~lib/set/Set<i32>#find
(get_local $0)
@ -3899,7 +3919,7 @@
(i32.const 0)
)
)
(func $~lib/set/Set<i32>#rehash (; 41 ;) (type $iiv) (param $0 i32) (param $1 i32)
(func $~lib/set/Set<i32>#rehash (; 45 ;) (type $iiv) (param $0 i32) (param $1 i32)
(local $2 i32)
(local $3 i32)
(local $4 i32)
@ -4056,7 +4076,7 @@
)
)
)
(func $~lib/set/Set<i32>#add (; 42 ;) (type $iiv) (param $0 i32) (param $1 i32)
(func $~lib/set/Set<i32>#add (; 46 ;) (type $iiv) (param $0 i32) (param $1 i32)
(local $2 i32)
(local $3 i32)
(local $4 i32)
@ -4185,7 +4205,7 @@
)
)
)
(func $~lib/set/Set<i32>#delete (; 43 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(func $~lib/set/Set<i32>#delete (; 47 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32)
(if
(i32.eqz
@ -4280,7 +4300,7 @@
)
(i32.const 1)
)
(func $std/set/test<i32> (; 44 ;) (type $v)
(func $std/set/test<i32> (; 48 ;) (type $v)
(local $0 i32)
(local $1 i32)
(set_local $1
@ -4624,7 +4644,7 @@
)
)
)
(func $std/set/test<u32> (; 45 ;) (type $v)
(func $std/set/test<u32> (; 49 ;) (type $v)
(local $0 i32)
(local $1 i32)
(set_local $1
@ -4968,7 +4988,7 @@
)
)
)
(func $~lib/set/Set<i64>#clear (; 46 ;) (type $iv) (param $0 i32)
(func $~lib/set/Set<i64>#clear (; 50 ;) (type $iv) (param $0 i32)
(i32.store
(get_local $0)
(call $~lib/arraybuffer/ArrayBuffer#constructor
@ -5002,7 +5022,7 @@
(i32.const 0)
)
)
(func $~lib/set/Set<i64>#constructor (; 47 ;) (type $ii) (param $0 i32) (result i32)
(func $~lib/set/Set<i64>#constructor (; 51 ;) (type $ii) (param $0 i32) (result i32)
(if
(i32.eqz
(get_local $0)
@ -5010,7 +5030,7 @@
(block
(i32.store
(tee_local $0
(call $~lib/allocator/arena/allocate_memory
(call $~lib/memory/memory.allocate
(i32.const 24)
)
)
@ -5043,7 +5063,7 @@
)
(get_local $0)
)
(func $~lib/internal/hash/hash64 (; 48 ;) (type $Ii) (param $0 i64) (result i32)
(func $~lib/internal/hash/hash64 (; 52 ;) (type $Ii) (param $0 i64) (result i32)
(local $1 i32)
(i32.mul
(i32.xor
@ -5142,12 +5162,12 @@
(i32.const 16777619)
)
)
(func $~lib/internal/hash/hash<i64> (; 49 ;) (type $Ii) (param $0 i64) (result i32)
(func $~lib/internal/hash/hash<i64> (; 53 ;) (type $Ii) (param $0 i64) (result i32)
(call $~lib/internal/hash/hash64
(get_local $0)
)
)
(func $~lib/set/Set<i64>#find (; 50 ;) (type $iIii) (param $0 i32) (param $1 i64) (param $2 i32) (result i32)
(func $~lib/set/Set<i64>#find (; 54 ;) (type $iIii) (param $0 i32) (param $1 i64) (param $2 i32) (result i32)
(set_local $2
(i32.load offset=8
(i32.add
@ -5210,7 +5230,7 @@
)
(i32.const 0)
)
(func $~lib/set/Set<i64>#has (; 51 ;) (type $iIi) (param $0 i32) (param $1 i64) (result i32)
(func $~lib/set/Set<i64>#has (; 55 ;) (type $iIi) (param $0 i32) (param $1 i64) (result i32)
(i32.ne
(call $~lib/set/Set<i64>#find
(get_local $0)
@ -5222,7 +5242,7 @@
(i32.const 0)
)
)
(func $~lib/set/Set<i64>#rehash (; 52 ;) (type $iiv) (param $0 i32) (param $1 i32)
(func $~lib/set/Set<i64>#rehash (; 56 ;) (type $iiv) (param $0 i32) (param $1 i32)
(local $2 i32)
(local $3 i32)
(local $4 i32)
@ -5379,7 +5399,7 @@
)
)
)
(func $~lib/set/Set<i64>#add (; 53 ;) (type $iIv) (param $0 i32) (param $1 i64)
(func $~lib/set/Set<i64>#add (; 57 ;) (type $iIv) (param $0 i32) (param $1 i64)
(local $2 i32)
(local $3 i32)
(local $4 i32)
@ -5508,7 +5528,7 @@
)
)
)
(func $~lib/set/Set<i64>#delete (; 54 ;) (type $iIi) (param $0 i32) (param $1 i64) (result i32)
(func $~lib/set/Set<i64>#delete (; 58 ;) (type $iIi) (param $0 i32) (param $1 i64) (result i32)
(local $2 i32)
(local $3 i32)
(if
@ -5604,7 +5624,7 @@
)
(i32.const 1)
)
(func $std/set/test<i64> (; 55 ;) (type $v)
(func $std/set/test<i64> (; 59 ;) (type $v)
(local $0 i64)
(local $1 i32)
(set_local $1
@ -5948,7 +5968,7 @@
)
)
)
(func $std/set/test<u64> (; 56 ;) (type $v)
(func $std/set/test<u64> (; 60 ;) (type $v)
(local $0 i64)
(local $1 i32)
(set_local $1
@ -6292,14 +6312,14 @@
)
)
)
(func $~lib/internal/hash/hash<f32> (; 57 ;) (type $fi) (param $0 f32) (result i32)
(func $~lib/internal/hash/hash<f32> (; 61 ;) (type $fi) (param $0 f32) (result i32)
(call $~lib/internal/hash/hash32
(i32.reinterpret/f32
(get_local $0)
)
)
)
(func $~lib/set/Set<f32>#find (; 58 ;) (type $ifii) (param $0 i32) (param $1 f32) (param $2 i32) (result i32)
(func $~lib/set/Set<f32>#find (; 62 ;) (type $ifii) (param $0 i32) (param $1 f32) (param $2 i32) (result i32)
(set_local $2
(i32.load offset=8
(i32.add
@ -6362,7 +6382,7 @@
)
(i32.const 0)
)
(func $~lib/set/Set<f32>#has (; 59 ;) (type $ifi) (param $0 i32) (param $1 f32) (result i32)
(func $~lib/set/Set<f32>#has (; 63 ;) (type $ifi) (param $0 i32) (param $1 f32) (result i32)
(i32.ne
(call $~lib/set/Set<f32>#find
(get_local $0)
@ -6374,7 +6394,7 @@
(i32.const 0)
)
)
(func $~lib/set/Set<f32>#rehash (; 60 ;) (type $iiv) (param $0 i32) (param $1 i32)
(func $~lib/set/Set<f32>#rehash (; 64 ;) (type $iiv) (param $0 i32) (param $1 i32)
(local $2 i32)
(local $3 i32)
(local $4 i32)
@ -6533,7 +6553,7 @@
)
)
)
(func $~lib/set/Set<f32>#add (; 61 ;) (type $ifv) (param $0 i32) (param $1 f32)
(func $~lib/set/Set<f32>#add (; 65 ;) (type $ifv) (param $0 i32) (param $1 f32)
(local $2 i32)
(local $3 i32)
(local $4 i32)
@ -6662,7 +6682,7 @@
)
)
)
(func $~lib/set/Set<f32>#delete (; 62 ;) (type $ifi) (param $0 i32) (param $1 f32) (result i32)
(func $~lib/set/Set<f32>#delete (; 66 ;) (type $ifi) (param $0 i32) (param $1 f32) (result i32)
(local $2 i32)
(local $3 i32)
(if
@ -6760,7 +6780,7 @@
)
(i32.const 1)
)
(func $std/set/test<f32> (; 63 ;) (type $v)
(func $std/set/test<f32> (; 67 ;) (type $v)
(local $0 f32)
(local $1 i32)
(set_local $1
@ -7112,14 +7132,14 @@
)
)
)
(func $~lib/internal/hash/hash<f64> (; 64 ;) (type $Fi) (param $0 f64) (result i32)
(func $~lib/internal/hash/hash<f64> (; 68 ;) (type $Fi) (param $0 f64) (result i32)
(call $~lib/internal/hash/hash64
(i64.reinterpret/f64
(get_local $0)
)
)
)
(func $~lib/set/Set<f64>#find (; 65 ;) (type $iFii) (param $0 i32) (param $1 f64) (param $2 i32) (result i32)
(func $~lib/set/Set<f64>#find (; 69 ;) (type $iFii) (param $0 i32) (param $1 f64) (param $2 i32) (result i32)
(set_local $2
(i32.load offset=8
(i32.add
@ -7182,7 +7202,7 @@
)
(i32.const 0)
)
(func $~lib/set/Set<f64>#has (; 66 ;) (type $iFi) (param $0 i32) (param $1 f64) (result i32)
(func $~lib/set/Set<f64>#has (; 70 ;) (type $iFi) (param $0 i32) (param $1 f64) (result i32)
(i32.ne
(call $~lib/set/Set<f64>#find
(get_local $0)
@ -7194,7 +7214,7 @@
(i32.const 0)
)
)
(func $~lib/set/Set<f64>#rehash (; 67 ;) (type $iiv) (param $0 i32) (param $1 i32)
(func $~lib/set/Set<f64>#rehash (; 71 ;) (type $iiv) (param $0 i32) (param $1 i32)
(local $2 i32)
(local $3 i32)
(local $4 i32)
@ -7353,7 +7373,7 @@
)
)
)
(func $~lib/set/Set<f64>#add (; 68 ;) (type $iFv) (param $0 i32) (param $1 f64)
(func $~lib/set/Set<f64>#add (; 72 ;) (type $iFv) (param $0 i32) (param $1 f64)
(local $2 i32)
(local $3 i32)
(local $4 i32)
@ -7482,7 +7502,7 @@
)
)
)
(func $~lib/set/Set<f64>#delete (; 69 ;) (type $iFi) (param $0 i32) (param $1 f64) (result i32)
(func $~lib/set/Set<f64>#delete (; 73 ;) (type $iFi) (param $0 i32) (param $1 f64) (result i32)
(local $2 i32)
(local $3 i32)
(if
@ -7580,7 +7600,7 @@
)
(i32.const 1)
)
(func $std/set/test<f64> (; 70 ;) (type $v)
(func $std/set/test<f64> (; 74 ;) (type $v)
(local $0 f64)
(local $1 i32)
(set_local $1
@ -7932,15 +7952,9 @@
)
)
)
(func $start (; 71 ;) (type $v)
(func $start (; 75 ;) (type $v)
(set_global $~lib/allocator/arena/startOffset
(i32.and
(i32.add
(get_global $HEAP_BASE)
(i32.const 7)
)
(i32.const -8)
)
(i32.const 136)
)
(set_global $~lib/allocator/arena/offset
(get_global $~lib/allocator/arena/startOffset)

File diff suppressed because it is too large Load Diff

Some files were not shown because too many files have changed in this diff Show More