Improve reallocateUnsafe and properly free unmanaged objects (#368)

This commit is contained in:
Max Graey 2018-12-09 00:54:45 +02:00 committed by Daniel Wirtz
parent 3ed83ef3ae
commit 8e61e0ead8
9 changed files with 1278 additions and 1354 deletions

View File

@ -40,11 +40,6 @@ export function reallocateUnsafe(buffer: ArrayBuffer, newByteLength: i32): Array
assert(newByteLength <= MAX_BLENGTH);
if (newByteLength <= <i32>(computeSize(oldByteLength) - HEADER_SIZE)) { // fast path: zero out additional space
store<i32>(changetype<usize>(buffer), newByteLength, offsetof<ArrayBuffer>("byteLength"));
memory.fill(
changetype<usize>(buffer) + HEADER_SIZE + <usize>oldByteLength,
0,
<usize>(newByteLength - oldByteLength)
);
} else { // slow path: copy to new buffer
let newBuffer = allocateUnsafe(newByteLength);
memory.copy(
@ -52,13 +47,16 @@ export function reallocateUnsafe(buffer: ArrayBuffer, newByteLength: i32): Array
changetype<usize>(buffer) + HEADER_SIZE,
<usize>oldByteLength
);
if (!isManaged<ArrayBuffer>()) {
memory.free(changetype<usize>(buffer));
}
buffer = newBuffer;
}
memory.fill(
changetype<usize>(newBuffer) + HEADER_SIZE + <usize>oldByteLength,
changetype<usize>(buffer) + HEADER_SIZE + <usize>oldByteLength,
0,
<usize>(newByteLength - oldByteLength)
);
return newBuffer;
}
} else if (newByteLength < oldByteLength) { // fast path: override size
// TBD: worth to copy and release if size is significantly less than before?
assert(newByteLength >= 0);

View File

@ -5,12 +5,12 @@
(type $iiiv (func (param i32 i32 i32)))
(type $iiiii (func (param i32 i32 i32 i32) (result i32)))
(type $iiii (func (param i32 i32 i32) (result i32)))
(type $iv (func (param i32)))
(type $iiv (func (param i32 i32)))
(type $iiif (func (param i32 i32 i32) (result f32)))
(type $F (func (result f64)))
(type $Iv (func (param i64)))
(type $ffi (func (param f32 f32) (result i32)))
(type $iv (func (param i32)))
(type $FFi (func (param f64 f64) (result i32)))
(type $Fi (func (param f64) (result i32)))
(type $iiiiiv (func (param i32 i32 i32 i32 i32)))
@ -2229,7 +2229,6 @@
(func $~lib/internal/arraybuffer/reallocateUnsafe (; 14 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32)
(local $3 i32)
(local $4 i32)
get_local $1
get_local $0
i32.load
@ -2263,39 +2262,30 @@
get_local $0
get_local $1
i32.store
get_local $0
i32.const 8
i32.add
get_local $2
i32.add
i32.const 0
get_local $1
get_local $2
i32.sub
call $~lib/internal/memory/memset
else
get_local $1
call $~lib/internal/arraybuffer/allocateUnsafe
tee_local $3
i32.const 8
i32.add
tee_local $4
get_local $0
i32.const 8
i32.add
get_local $2
call $~lib/internal/memory/memmove
get_local $3
set_local $0
end
get_local $0
i32.const 8
i32.add
get_local $2
get_local $4
i32.add
i32.const 0
get_local $1
get_local $2
i32.sub
call $~lib/internal/memory/memset
get_local $3
return
end
else
get_local $1
get_local $2
@ -2307,7 +2297,7 @@
if
i32.const 0
i32.const 40
i32.const 64
i32.const 62
i32.const 4
call $~lib/env/abort
unreachable

View File

@ -5,6 +5,7 @@
(type $iiiv (func (param i32 i32 i32)))
(type $iiiii (func (param i32 i32 i32 i32) (result i32)))
(type $iiii (func (param i32 i32 i32) (result i32)))
(type $iv (func (param i32)))
(type $iiv (func (param i32 i32)))
(type $iiif (func (param i32 i32 i32) (result f32)))
(type $iif (func (param i32 i32) (result f32)))
@ -12,7 +13,6 @@
(type $Iv (func (param i64)))
(type $II (func (param i64) (result i64)))
(type $ffi (func (param f32 f32) (result i32)))
(type $iv (func (param i32)))
(type $fi (func (param f32) (result i32)))
(type $FFi (func (param f64 f64) (result i32)))
(type $iiF (func (param i32 i32) (result f64)))
@ -2752,12 +2752,14 @@
end
end
)
(func $~lib/internal/arraybuffer/reallocateUnsafe (; 23 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(func $~lib/allocator/arena/__memory_free (; 23 ;) (type $iv) (param $0 i32)
nop
)
(func $~lib/internal/arraybuffer/reallocateUnsafe (; 24 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32)
(local $3 i32)
(local $4 i32)
(local $5 i32)
(local $6 i32)
get_local $0
i32.load
set_local $2
@ -2787,57 +2789,50 @@
get_local $0
get_local $1
i32.store
get_local $0
get_global $~lib/internal/arraybuffer/HEADER_SIZE
i32.add
get_local $2
i32.add
set_local $3
i32.const 0
set_local $4
get_local $1
get_local $2
i32.sub
set_local $5
get_local $3
get_local $4
get_local $5
call $~lib/internal/memory/memset
else
get_local $1
call $~lib/internal/arraybuffer/allocateUnsafe
set_local $5
get_local $5
set_local $3
get_local $3
get_global $~lib/internal/arraybuffer/HEADER_SIZE
i32.add
set_local $4
get_local $0
get_global $~lib/internal/arraybuffer/HEADER_SIZE
i32.add
set_local $3
set_local $5
get_local $4
get_local $3
get_local $5
get_local $2
call $~lib/internal/memory/memmove
get_local $5
block $~lib/memory/memory.free|inlined.0
block
get_local $0
call $~lib/allocator/arena/__memory_free
br $~lib/memory/memory.free|inlined.0
unreachable
end
unreachable
end
get_local $3
set_local $0
end
get_local $0
get_global $~lib/internal/arraybuffer/HEADER_SIZE
i32.add
get_local $2
i32.add
set_local $3
i32.const 0
set_local $4
set_local $5
get_local $1
get_local $2
i32.sub
set_local $6
set_local $4
get_local $3
get_local $4
get_local $6
call $~lib/internal/memory/memset
get_local $5
return
end
get_local $4
call $~lib/internal/memory/memset
else
get_local $1
get_local $2
@ -2850,7 +2845,7 @@
if
i32.const 0
i32.const 40
i32.const 64
i32.const 62
i32.const 4
call $~lib/env/abort
unreachable
@ -2862,7 +2857,7 @@
end
get_local $0
)
(func $~lib/array/Array<i32>#push (; 24 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(func $~lib/array/Array<i32>#push (; 25 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32)
(local $3 i32)
(local $4 i32)
@ -2924,7 +2919,7 @@
i32.store offset=8
get_local $5
)
(func $~lib/array/Array<i32>#__get (; 25 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(func $~lib/array/Array<i32>#__get (; 26 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32)
(local $3 i32)
get_local $0
@ -2951,7 +2946,7 @@
unreachable
end
)
(func $~lib/array/Array<i32>#pop (; 26 ;) (type $ii) (param $0 i32) (result i32)
(func $~lib/array/Array<i32>#pop (; 27 ;) (type $ii) (param $0 i32) (result i32)
(local $1 i32)
(local $2 i32)
(local $3 i32)
@ -2997,7 +2992,7 @@
i32.store offset=4
get_local $5
)
(func $~lib/array/Array<i32>#concat (; 27 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(func $~lib/array/Array<i32>#concat (; 28 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32)
(local $3 i32)
(local $4 i32)
@ -3074,7 +3069,7 @@
end
get_local $5
)
(func $~lib/array/Array<i32>#copyWithin (; 28 ;) (type $iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32)
(func $~lib/array/Array<i32>#copyWithin (; 29 ;) (type $iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32)
(local $4 i32)
(local $5 i32)
(local $6 i32)
@ -3287,7 +3282,7 @@
end
get_local $0
)
(func $~lib/array/Array<i32>#copyWithin|trampoline (; 29 ;) (type $iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32)
(func $~lib/array/Array<i32>#copyWithin|trampoline (; 30 ;) (type $iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32)
block $1of1
block $0of1
block $outOfRange
@ -3307,7 +3302,7 @@
get_local $3
call $~lib/array/Array<i32>#copyWithin
)
(func $std/array/isArraysEqual<i32> (; 30 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(func $std/array/isArraysEqual<i32> (; 31 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(local $3 i32)
get_local $2
i32.eqz
@ -3366,7 +3361,7 @@
end
i32.const 1
)
(func $~lib/array/Array<i32>#unshift (; 31 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(func $~lib/array/Array<i32>#unshift (; 32 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32)
(local $3 i32)
(local $4 i32)
@ -3457,7 +3452,7 @@
i32.store offset=4
get_local $5
)
(func $~lib/array/Array<i32>#shift (; 32 ;) (type $ii) (param $0 i32) (result i32)
(func $~lib/array/Array<i32>#shift (; 33 ;) (type $ii) (param $0 i32) (result i32)
(local $1 i32)
(local $2 i32)
(local $3 i32)
@ -3537,7 +3532,7 @@
i32.store offset=4
get_local $5
)
(func $~lib/array/Array<i32>#reverse (; 33 ;) (type $ii) (param $0 i32) (result i32)
(func $~lib/array/Array<i32>#reverse (; 34 ;) (type $ii) (param $0 i32) (result i32)
(local $1 i32)
(local $2 i32)
(local $3 i32)
@ -3630,7 +3625,7 @@
end
get_local $0
)
(func $~lib/array/Array<i32>#indexOf (; 34 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(func $~lib/array/Array<i32>#indexOf (; 35 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(local $3 i32)
(local $4 i32)
(local $5 i32)
@ -3708,7 +3703,7 @@
end
i32.const -1
)
(func $~lib/array/Array<i32>#splice (; 35 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(func $~lib/array/Array<i32>#splice (; 36 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(local $3 i32)
(local $4 i32)
(local $5 i32)
@ -3824,7 +3819,7 @@
i32.store offset=4
get_local $7
)
(func $~lib/array/Array<i32>#splice|trampoline (; 36 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(func $~lib/array/Array<i32>#splice|trampoline (; 37 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
block $1of1
block $0of1
block $outOfRange
@ -3843,7 +3838,7 @@
get_local $2
call $~lib/array/Array<i32>#splice
)
(func $~lib/array/Array<i32>#__set (; 37 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32)
(func $~lib/array/Array<i32>#__set (; 38 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32)
(local $3 i32)
(local $4 i32)
(local $5 i32)
@ -3899,12 +3894,12 @@
get_local $2
i32.store offset=8
)
(func $start~anonymous|1 (; 38 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(func $start~anonymous|1 (; 39 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
get_local $0
i32.const 0
i32.eq
)
(func $~lib/array/Array<i32>#findIndex (; 39 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(func $~lib/array/Array<i32>#findIndex (; 40 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32)
(local $3 i32)
(local $4 i32)
@ -3972,17 +3967,17 @@
end
i32.const -1
)
(func $start~anonymous|2 (; 40 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(func $start~anonymous|2 (; 41 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
get_local $0
i32.const 1
i32.eq
)
(func $start~anonymous|3 (; 41 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(func $start~anonymous|3 (; 42 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
get_local $0
i32.const 100
i32.eq
)
(func $start~anonymous|4 (; 42 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(func $start~anonymous|4 (; 43 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
get_local $2
i32.const 100
call $~lib/array/Array<i32>#push
@ -3991,12 +3986,12 @@
i32.const 100
i32.eq
)
(func $start~anonymous|5 (; 43 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(func $start~anonymous|5 (; 44 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
get_local $0
i32.const 100
i32.eq
)
(func $start~anonymous|6 (; 44 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(func $start~anonymous|6 (; 45 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
get_local $2
call $~lib/array/Array<i32>#pop
drop
@ -4004,12 +3999,12 @@
i32.const 100
i32.eq
)
(func $start~anonymous|7 (; 45 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(func $start~anonymous|7 (; 46 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
get_local $0
i32.const 0
i32.ge_s
)
(func $~lib/array/Array<i32>#every (; 46 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(func $~lib/array/Array<i32>#every (; 47 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32)
(local $3 i32)
(local $4 i32)
@ -4078,12 +4073,12 @@
end
i32.const 1
)
(func $start~anonymous|8 (; 47 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(func $start~anonymous|8 (; 48 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
get_local $0
i32.const 0
i32.le_s
)
(func $start~anonymous|9 (; 48 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(func $start~anonymous|9 (; 49 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
get_local $2
i32.const 100
call $~lib/array/Array<i32>#push
@ -4092,12 +4087,12 @@
i32.const 10
i32.lt_s
)
(func $start~anonymous|10 (; 49 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(func $start~anonymous|10 (; 50 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
get_local $0
i32.const 10
i32.lt_s
)
(func $start~anonymous|11 (; 50 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(func $start~anonymous|11 (; 51 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
get_local $2
call $~lib/array/Array<i32>#pop
drop
@ -4105,12 +4100,12 @@
i32.const 3
i32.lt_s
)
(func $start~anonymous|12 (; 51 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(func $start~anonymous|12 (; 52 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
get_local $0
i32.const 3
i32.ge_s
)
(func $~lib/array/Array<i32>#some (; 52 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(func $~lib/array/Array<i32>#some (; 53 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32)
(local $3 i32)
(local $4 i32)
@ -4178,12 +4173,12 @@
end
i32.const 0
)
(func $start~anonymous|13 (; 53 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(func $start~anonymous|13 (; 54 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
get_local $0
i32.const -1
i32.le_s
)
(func $start~anonymous|14 (; 54 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(func $start~anonymous|14 (; 55 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
get_local $2
i32.const 100
call $~lib/array/Array<i32>#push
@ -4192,12 +4187,12 @@
i32.const 10
i32.gt_s
)
(func $start~anonymous|15 (; 55 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(func $start~anonymous|15 (; 56 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
get_local $0
i32.const 10
i32.gt_s
)
(func $start~anonymous|16 (; 56 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(func $start~anonymous|16 (; 57 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
get_local $2
call $~lib/array/Array<i32>#pop
drop
@ -4205,13 +4200,13 @@
i32.const 3
i32.gt_s
)
(func $start~anonymous|17 (; 57 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32)
(func $start~anonymous|17 (; 58 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32)
get_global $std/array/i
get_local $0
i32.add
set_global $std/array/i
)
(func $~lib/array/Array<i32>#forEach (; 58 ;) (type $iiv) (param $0 i32) (param $1 i32)
(func $~lib/array/Array<i32>#forEach (; 59 ;) (type $iiv) (param $0 i32) (param $1 i32)
(local $2 i32)
(local $3 i32)
(local $4 i32)
@ -4272,7 +4267,7 @@
unreachable
end
)
(func $start~anonymous|18 (; 59 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32)
(func $start~anonymous|18 (; 60 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32)
get_local $2
i32.const 100
call $~lib/array/Array<i32>#push
@ -4282,13 +4277,13 @@
i32.add
set_global $std/array/i
)
(func $start~anonymous|19 (; 60 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32)
(func $start~anonymous|19 (; 61 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32)
get_global $std/array/i
get_local $0
i32.add
set_global $std/array/i
)
(func $start~anonymous|20 (; 61 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32)
(func $start~anonymous|20 (; 62 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32)
get_local $2
call $~lib/array/Array<i32>#pop
drop
@ -4297,11 +4292,11 @@
i32.add
set_global $std/array/i
)
(func $start~anonymous|21 (; 62 ;) (type $iiif) (param $0 i32) (param $1 i32) (param $2 i32) (result f32)
(func $start~anonymous|21 (; 63 ;) (type $iiif) (param $0 i32) (param $1 i32) (param $2 i32) (result f32)
get_local $0
f32.convert_s/i32
)
(func $~lib/array/Array<f32>#constructor (; 63 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(func $~lib/array/Array<f32>#constructor (; 64 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32)
(local $3 i32)
(local $4 i32)
@ -4360,7 +4355,7 @@
call $~lib/internal/memory/memset
get_local $0
)
(func $~lib/array/Array<i32>#map<f32> (; 64 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(func $~lib/array/Array<i32>#map<f32> (; 65 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32)
(local $3 i32)
(local $4 i32)
@ -4444,7 +4439,7 @@
end
get_local $4
)
(func $~lib/array/Array<f32>#__get (; 65 ;) (type $iif) (param $0 i32) (param $1 i32) (result f32)
(func $~lib/array/Array<f32>#__get (; 66 ;) (type $iif) (param $0 i32) (param $1 i32) (result f32)
(local $2 i32)
(local $3 i32)
get_local $0
@ -4471,7 +4466,7 @@
unreachable
end
)
(func $start~anonymous|22 (; 66 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(func $start~anonymous|22 (; 67 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
get_local $2
i32.const 100
call $~lib/array/Array<i32>#push
@ -4482,7 +4477,7 @@
set_global $std/array/i
get_local $0
)
(func $~lib/array/Array<i32>#map<i32> (; 67 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(func $~lib/array/Array<i32>#map<i32> (; 68 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32)
(local $3 i32)
(local $4 i32)
@ -4565,14 +4560,14 @@
end
get_local $4
)
(func $start~anonymous|23 (; 68 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(func $start~anonymous|23 (; 69 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
get_global $std/array/i
get_local $0
i32.add
set_global $std/array/i
get_local $0
)
(func $start~anonymous|24 (; 69 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(func $start~anonymous|24 (; 70 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
get_local $2
call $~lib/array/Array<i32>#pop
drop
@ -4582,12 +4577,12 @@
set_global $std/array/i
get_local $0
)
(func $start~anonymous|25 (; 70 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(func $start~anonymous|25 (; 71 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
get_local $0
i32.const 2
i32.ge_s
)
(func $~lib/array/Array<i32>#filter (; 71 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(func $~lib/array/Array<i32>#filter (; 72 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32)
(local $3 i32)
(local $4 i32)
@ -4666,7 +4661,7 @@
end
get_local $3
)
(func $start~anonymous|26 (; 72 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(func $start~anonymous|26 (; 73 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
get_local $2
i32.const 100
call $~lib/array/Array<i32>#push
@ -4679,7 +4674,7 @@
i32.const 2
i32.ge_s
)
(func $start~anonymous|27 (; 73 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(func $start~anonymous|27 (; 74 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
get_global $std/array/i
get_local $0
i32.add
@ -4688,7 +4683,7 @@
i32.const 2
i32.ge_s
)
(func $start~anonymous|28 (; 74 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(func $start~anonymous|28 (; 75 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
get_local $2
call $~lib/array/Array<i32>#pop
drop
@ -4700,12 +4695,12 @@
i32.const 2
i32.ge_s
)
(func $start~anonymous|29 (; 75 ;) (type $iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32)
(func $start~anonymous|29 (; 76 ;) (type $iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32)
get_local $0
get_local $1
i32.add
)
(func $~lib/array/Array<i32>#reduce<i32> (; 76 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(func $~lib/array/Array<i32>#reduce<i32> (; 77 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(local $3 i32)
(local $4 i32)
(local $5 i32)
@ -4772,12 +4767,12 @@
end
get_local $3
)
(func $start~anonymous|30 (; 77 ;) (type $iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32)
(func $start~anonymous|30 (; 78 ;) (type $iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32)
get_local $0
get_local $1
i32.add
)
(func $start~anonymous|31 (; 78 ;) (type $iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32)
(func $start~anonymous|31 (; 79 ;) (type $iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32)
get_local $0
i32.const 0
i32.ne
@ -4789,7 +4784,7 @@
i32.gt_s
end
)
(func $~lib/array/Array<i32>#reduce<bool> (; 79 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(func $~lib/array/Array<i32>#reduce<bool> (; 80 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(local $3 i32)
(local $4 i32)
(local $5 i32)
@ -4856,7 +4851,7 @@
end
get_local $3
)
(func $start~anonymous|32 (; 80 ;) (type $iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32)
(func $start~anonymous|32 (; 81 ;) (type $iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32)
get_local $0
i32.const 0
i32.ne
@ -4868,7 +4863,7 @@
i32.gt_s
end
)
(func $start~anonymous|33 (; 81 ;) (type $iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32)
(func $start~anonymous|33 (; 82 ;) (type $iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32)
get_local $3
i32.const 1
call $~lib/array/Array<i32>#push
@ -4877,12 +4872,12 @@
get_local $1
i32.add
)
(func $start~anonymous|34 (; 82 ;) (type $iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32)
(func $start~anonymous|34 (; 83 ;) (type $iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32)
get_local $0
get_local $1
i32.add
)
(func $start~anonymous|35 (; 83 ;) (type $iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32)
(func $start~anonymous|35 (; 84 ;) (type $iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32)
get_local $3
call $~lib/array/Array<i32>#pop
drop
@ -4890,12 +4885,12 @@
get_local $1
i32.add
)
(func $start~anonymous|36 (; 84 ;) (type $iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32)
(func $start~anonymous|36 (; 85 ;) (type $iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32)
get_local $0
get_local $1
i32.add
)
(func $~lib/array/Array<i32>#reduceRight<i32> (; 85 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(func $~lib/array/Array<i32>#reduceRight<i32> (; 86 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(local $3 i32)
(local $4 i32)
(local $5 i32)
@ -4950,12 +4945,12 @@
end
get_local $3
)
(func $start~anonymous|37 (; 86 ;) (type $iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32)
(func $start~anonymous|37 (; 87 ;) (type $iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32)
get_local $0
get_local $1
i32.add
)
(func $start~anonymous|38 (; 87 ;) (type $iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32)
(func $start~anonymous|38 (; 88 ;) (type $iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32)
get_local $0
i32.const 0
i32.ne
@ -4967,7 +4962,7 @@
i32.gt_s
end
)
(func $~lib/array/Array<i32>#reduceRight<bool> (; 88 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(func $~lib/array/Array<i32>#reduceRight<bool> (; 89 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(local $3 i32)
(local $4 i32)
(local $5 i32)
@ -5022,7 +5017,7 @@
end
get_local $3
)
(func $start~anonymous|39 (; 89 ;) (type $iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32)
(func $start~anonymous|39 (; 90 ;) (type $iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32)
get_local $0
i32.const 0
i32.ne
@ -5034,7 +5029,7 @@
i32.gt_s
end
)
(func $start~anonymous|40 (; 90 ;) (type $iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32)
(func $start~anonymous|40 (; 91 ;) (type $iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32)
get_local $3
i32.const 1
call $~lib/array/Array<i32>#push
@ -5043,12 +5038,12 @@
get_local $1
i32.add
)
(func $start~anonymous|41 (; 91 ;) (type $iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32)
(func $start~anonymous|41 (; 92 ;) (type $iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32)
get_local $0
get_local $1
i32.add
)
(func $start~anonymous|42 (; 92 ;) (type $iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32)
(func $start~anonymous|42 (; 93 ;) (type $iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32)
get_local $3
call $~lib/array/Array<i32>#pop
drop
@ -5056,7 +5051,7 @@
get_local $1
i32.add
)
(func $~lib/math/murmurHash3 (; 93 ;) (type $II) (param $0 i64) (result i64)
(func $~lib/math/murmurHash3 (; 94 ;) (type $II) (param $0 i64) (result i64)
get_local $0
get_local $0
i64.const 33
@ -5085,7 +5080,7 @@
set_local $0
get_local $0
)
(func $~lib/math/splitMix32 (; 94 ;) (type $ii) (param $0 i32) (result i32)
(func $~lib/math/splitMix32 (; 95 ;) (type $ii) (param $0 i32) (result i32)
get_local $0
i32.const 1831565813
i32.add
@ -5120,7 +5115,7 @@
i32.shr_u
i32.xor
)
(func $~lib/math/NativeMath.seedRandom (; 95 ;) (type $Iv) (param $0 i64)
(func $~lib/math/NativeMath.seedRandom (; 96 ;) (type $Iv) (param $0 i64)
get_local $0
i64.eqz
if
@ -5149,7 +5144,7 @@
call $~lib/math/splitMix32
set_global $~lib/math/random_state1_32
)
(func $~lib/internal/sort/insertionSort<f32> (; 96 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
(func $~lib/internal/sort/insertionSort<f32> (; 97 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
(local $4 i32)
(local $5 f32)
(local $6 i32)
@ -5261,9 +5256,6 @@
unreachable
end
)
(func $~lib/allocator/arena/__memory_free (; 97 ;) (type $iv) (param $0 i32)
nop
)
(func $~lib/internal/sort/weakHeapSort<f32> (; 98 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
(local $4 i32)
(local $5 i32)
@ -5619,11 +5611,11 @@
end
unreachable
end
block $~lib/memory/memory.free|inlined.0
block $~lib/memory/memory.free|inlined.1
block
get_local $5
call $~lib/allocator/arena/__memory_free
br $~lib/memory/memory.free|inlined.0
br $~lib/memory/memory.free|inlined.1
unreachable
end
unreachable
@ -6401,11 +6393,11 @@
end
unreachable
end
block $~lib/memory/memory.free|inlined.1
block $~lib/memory/memory.free|inlined.2
block
get_local $5
call $~lib/allocator/arena/__memory_free
br $~lib/memory/memory.free|inlined.1
br $~lib/memory/memory.free|inlined.2
unreachable
end
unreachable
@ -7210,11 +7202,11 @@
end
unreachable
end
block $~lib/memory/memory.free|inlined.2
block $~lib/memory/memory.free|inlined.3
block
get_local $5
call $~lib/allocator/arena/__memory_free
br $~lib/memory/memory.free|inlined.2
br $~lib/memory/memory.free|inlined.3
unreachable
end
unreachable
@ -7884,11 +7876,11 @@
end
unreachable
end
block $~lib/memory/memory.free|inlined.3
block $~lib/memory/memory.free|inlined.4
block
get_local $5
call $~lib/allocator/arena/__memory_free
br $~lib/memory/memory.free|inlined.3
br $~lib/memory/memory.free|inlined.4
unreachable
end
unreachable
@ -10637,11 +10629,11 @@
call $~lib/env/abort
unreachable
end
block $~lib/memory/memory.free|inlined.4
block $~lib/memory/memory.free|inlined.5
block
get_local $10
call $~lib/allocator/arena/__memory_free
br $~lib/memory/memory.free|inlined.4
br $~lib/memory/memory.free|inlined.5
unreachable
end
unreachable
@ -11146,11 +11138,11 @@
call $~lib/env/abort
unreachable
end
block $~lib/memory/memory.free|inlined.5
block $~lib/memory/memory.free|inlined.6
block
get_local $8
call $~lib/allocator/arena/__memory_free
br $~lib/memory/memory.free|inlined.5
br $~lib/memory/memory.free|inlined.6
unreachable
end
unreachable
@ -11376,11 +11368,11 @@
call $~lib/env/abort
unreachable
end
block $~lib/memory/memory.free|inlined.6
block $~lib/memory/memory.free|inlined.7
block
get_local $8
call $~lib/allocator/arena/__memory_free
br $~lib/memory/memory.free|inlined.6
br $~lib/memory/memory.free|inlined.7
unreachable
end
unreachable
@ -12786,11 +12778,11 @@
call $~lib/env/abort
unreachable
end
block $~lib/memory/memory.free|inlined.7
block $~lib/memory/memory.free|inlined.8
block
get_local $1
call $~lib/allocator/arena/__memory_free
br $~lib/memory/memory.free|inlined.7
br $~lib/memory/memory.free|inlined.8
unreachable
end
unreachable
@ -13047,11 +13039,11 @@
call $~lib/env/abort
unreachable
end
block $~lib/memory/memory.free|inlined.8
block $~lib/memory/memory.free|inlined.9
block
get_local $8
call $~lib/allocator/arena/__memory_free
br $~lib/memory/memory.free|inlined.8
br $~lib/memory/memory.free|inlined.9
unreachable
end
unreachable
@ -13508,11 +13500,11 @@
call $~lib/env/abort
unreachable
end
block $~lib/memory/memory.free|inlined.9
block $~lib/memory/memory.free|inlined.10
block
get_local $9
call $~lib/allocator/arena/__memory_free
br $~lib/memory/memory.free|inlined.9
br $~lib/memory/memory.free|inlined.10
unreachable
end
unreachable
@ -13760,11 +13752,11 @@
call $~lib/env/abort
unreachable
end
block $~lib/memory/memory.free|inlined.10
block $~lib/memory/memory.free|inlined.11
block
get_local $8
call $~lib/allocator/arena/__memory_free
br $~lib/memory/memory.free|inlined.10
br $~lib/memory/memory.free|inlined.11
unreachable
end
unreachable
@ -13980,11 +13972,11 @@
call $~lib/env/abort
unreachable
end
block $~lib/memory/memory.free|inlined.11
block $~lib/memory/memory.free|inlined.12
block
get_local $8
call $~lib/allocator/arena/__memory_free
br $~lib/memory/memory.free|inlined.11
br $~lib/memory/memory.free|inlined.12
unreachable
end
unreachable
@ -14473,11 +14465,11 @@
call $~lib/env/abort
unreachable
end
block $~lib/memory/memory.free|inlined.12
block $~lib/memory/memory.free|inlined.13
block
get_local $8
call $~lib/allocator/arena/__memory_free
br $~lib/memory/memory.free|inlined.12
br $~lib/memory/memory.free|inlined.13
unreachable
end
unreachable
@ -14786,11 +14778,11 @@
call $~lib/env/abort
unreachable
end
block $~lib/memory/memory.free|inlined.13
block $~lib/memory/memory.free|inlined.14
block
get_local $8
call $~lib/allocator/arena/__memory_free
br $~lib/memory/memory.free|inlined.13
br $~lib/memory/memory.free|inlined.14
unreachable
end
unreachable
@ -15141,11 +15133,11 @@
call $~lib/env/abort
unreachable
end
block $~lib/memory/memory.free|inlined.14
block $~lib/memory/memory.free|inlined.15
block
get_local $8
call $~lib/allocator/arena/__memory_free
br $~lib/memory/memory.free|inlined.14
br $~lib/memory/memory.free|inlined.15
unreachable
end
unreachable

View File

@ -410,226 +410,7 @@
i32.const 16
i32.add
)
(func $~lib/internal/memory/memset (; 11 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
(local $2 i32)
get_local $1
i32.eqz
if
return
end
get_local $0
i32.const 0
i32.store8
get_local $0
get_local $1
i32.add
i32.const 1
i32.sub
i32.const 0
i32.store8
get_local $1
i32.const 2
i32.le_u
if
return
end
get_local $0
i32.const 1
i32.add
i32.const 0
i32.store8
get_local $0
i32.const 2
i32.add
i32.const 0
i32.store8
get_local $0
get_local $1
i32.add
tee_local $2
i32.const 2
i32.sub
i32.const 0
i32.store8
get_local $2
i32.const 3
i32.sub
i32.const 0
i32.store8
get_local $1
i32.const 6
i32.le_u
if
return
end
get_local $0
i32.const 3
i32.add
i32.const 0
i32.store8
get_local $0
get_local $1
i32.add
i32.const 4
i32.sub
i32.const 0
i32.store8
get_local $1
i32.const 8
i32.le_u
if
return
end
i32.const 0
get_local $0
i32.sub
i32.const 3
i32.and
tee_local $2
get_local $0
i32.add
tee_local $0
i32.const 0
i32.store
get_local $1
get_local $2
i32.sub
i32.const -4
i32.and
tee_local $1
get_local $0
i32.add
i32.const 4
i32.sub
i32.const 0
i32.store
get_local $1
i32.const 8
i32.le_u
if
return
end
get_local $0
i32.const 4
i32.add
i32.const 0
i32.store
get_local $0
i32.const 8
i32.add
i32.const 0
i32.store
get_local $0
get_local $1
i32.add
tee_local $2
i32.const 12
i32.sub
i32.const 0
i32.store
get_local $2
i32.const 8
i32.sub
i32.const 0
i32.store
get_local $1
i32.const 24
i32.le_u
if
return
end
get_local $0
i32.const 12
i32.add
i32.const 0
i32.store
get_local $0
i32.const 16
i32.add
i32.const 0
i32.store
get_local $0
i32.const 20
i32.add
i32.const 0
i32.store
get_local $0
i32.const 24
i32.add
i32.const 0
i32.store
get_local $0
get_local $1
i32.add
tee_local $2
i32.const 28
i32.sub
i32.const 0
i32.store
get_local $2
i32.const 24
i32.sub
i32.const 0
i32.store
get_local $2
i32.const 20
i32.sub
i32.const 0
i32.store
get_local $2
i32.const 16
i32.sub
i32.const 0
i32.store
get_local $0
i32.const 4
i32.and
i32.const 24
i32.add
tee_local $2
get_local $0
i32.add
set_local $0
get_local $1
get_local $2
i32.sub
set_local $1
loop $continue|0
get_local $1
i32.const 32
i32.ge_u
if
get_local $0
i64.const 0
i64.store
get_local $0
i32.const 8
i32.add
i64.const 0
i64.store
get_local $0
i32.const 16
i32.add
i64.const 0
i64.store
get_local $0
i32.const 24
i32.add
i64.const 0
i64.store
get_local $1
i32.const 32
i32.sub
set_local $1
get_local $0
i32.const 32
i32.add
set_local $0
br $continue|0
end
end
)
(func $~lib/internal/arraybuffer/allocateUnsafe (; 12 ;) (type $ii) (param $0 i32) (result i32)
(func $~lib/internal/arraybuffer/allocateUnsafe (; 11 ;) (type $ii) (param $0 i32) (result i32)
(local $1 i32)
get_local $0
i32.const 1073741816
@ -657,7 +438,7 @@
i32.store
get_local $1
)
(func $~lib/internal/memory/memcpy (; 13 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32)
(func $~lib/internal/memory/memcpy (; 12 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32)
(local $3 i32)
(local $4 i32)
(local $5 i32)
@ -1561,7 +1342,7 @@
i32.store8
end
)
(func $~lib/internal/memory/memmove (; 14 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32)
(func $~lib/internal/memory/memmove (; 13 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32)
(local $3 i32)
(local $4 i32)
get_local $0
@ -1761,10 +1542,228 @@
end
end
)
(func $~lib/internal/memory/memset (; 14 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
(local $2 i32)
get_local $1
i32.eqz
if
return
end
get_local $0
i32.const 0
i32.store8
get_local $0
get_local $1
i32.add
i32.const 1
i32.sub
i32.const 0
i32.store8
get_local $1
i32.const 2
i32.le_u
if
return
end
get_local $0
i32.const 1
i32.add
i32.const 0
i32.store8
get_local $0
i32.const 2
i32.add
i32.const 0
i32.store8
get_local $0
get_local $1
i32.add
tee_local $2
i32.const 2
i32.sub
i32.const 0
i32.store8
get_local $2
i32.const 3
i32.sub
i32.const 0
i32.store8
get_local $1
i32.const 6
i32.le_u
if
return
end
get_local $0
i32.const 3
i32.add
i32.const 0
i32.store8
get_local $0
get_local $1
i32.add
i32.const 4
i32.sub
i32.const 0
i32.store8
get_local $1
i32.const 8
i32.le_u
if
return
end
i32.const 0
get_local $0
i32.sub
i32.const 3
i32.and
tee_local $2
get_local $0
i32.add
tee_local $0
i32.const 0
i32.store
get_local $1
get_local $2
i32.sub
i32.const -4
i32.and
tee_local $1
get_local $0
i32.add
i32.const 4
i32.sub
i32.const 0
i32.store
get_local $1
i32.const 8
i32.le_u
if
return
end
get_local $0
i32.const 4
i32.add
i32.const 0
i32.store
get_local $0
i32.const 8
i32.add
i32.const 0
i32.store
get_local $0
get_local $1
i32.add
tee_local $2
i32.const 12
i32.sub
i32.const 0
i32.store
get_local $2
i32.const 8
i32.sub
i32.const 0
i32.store
get_local $1
i32.const 24
i32.le_u
if
return
end
get_local $0
i32.const 12
i32.add
i32.const 0
i32.store
get_local $0
i32.const 16
i32.add
i32.const 0
i32.store
get_local $0
i32.const 20
i32.add
i32.const 0
i32.store
get_local $0
i32.const 24
i32.add
i32.const 0
i32.store
get_local $0
get_local $1
i32.add
tee_local $2
i32.const 28
i32.sub
i32.const 0
i32.store
get_local $2
i32.const 24
i32.sub
i32.const 0
i32.store
get_local $2
i32.const 20
i32.sub
i32.const 0
i32.store
get_local $2
i32.const 16
i32.sub
i32.const 0
i32.store
get_local $0
i32.const 4
i32.and
i32.const 24
i32.add
tee_local $2
get_local $0
i32.add
set_local $0
get_local $1
get_local $2
i32.sub
set_local $1
loop $continue|0
get_local $1
i32.const 32
i32.ge_u
if
get_local $0
i64.const 0
i64.store
get_local $0
i32.const 8
i32.add
i64.const 0
i64.store
get_local $0
i32.const 16
i32.add
i64.const 0
i64.store
get_local $0
i32.const 24
i32.add
i64.const 0
i64.store
get_local $1
i32.const 32
i32.sub
set_local $1
get_local $0
i32.const 32
i32.add
set_local $0
br $continue|0
end
end
)
(func $~lib/internal/arraybuffer/reallocateUnsafe (; 15 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32)
(local $3 i32)
(local $4 i32)
get_local $1
get_local $0
i32.load
@ -1798,37 +1797,29 @@
get_local $0
get_local $1
i32.store
get_local $0
i32.const 8
i32.add
get_local $2
i32.add
get_local $1
get_local $2
i32.sub
call $~lib/internal/memory/memset
else
get_local $1
call $~lib/internal/arraybuffer/allocateUnsafe
tee_local $3
i32.const 8
i32.add
tee_local $4
get_local $0
i32.const 8
i32.add
get_local $2
call $~lib/internal/memory/memmove
get_local $3
set_local $0
end
get_local $0
i32.const 8
i32.add
get_local $2
get_local $4
i32.add
get_local $1
get_local $2
i32.sub
call $~lib/internal/memory/memset
get_local $3
return
end
else
get_local $1
get_local $2
@ -1840,7 +1831,7 @@
if
i32.const 0
i32.const 120
i32.const 64
i32.const 62
i32.const 4
call $~lib/env/abort
unreachable

View File

@ -558,264 +558,10 @@
i32.sub
i32.shl
)
(func $~lib/internal/memory/memset (; 21 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32)
(local $3 i32)
(local $4 i32)
(local $5 i64)
get_local $2
i32.eqz
if
return
end
get_local $0
get_local $1
i32.store8
get_local $0
get_local $2
i32.add
i32.const 1
i32.sub
get_local $1
i32.store8
get_local $2
i32.const 2
i32.le_u
if
return
end
get_local $0
i32.const 1
i32.add
get_local $1
i32.store8
get_local $0
i32.const 2
i32.add
get_local $1
i32.store8
get_local $0
get_local $2
i32.add
i32.const 2
i32.sub
get_local $1
i32.store8
get_local $0
get_local $2
i32.add
i32.const 3
i32.sub
get_local $1
i32.store8
get_local $2
i32.const 6
i32.le_u
if
return
end
get_local $0
i32.const 3
i32.add
get_local $1
i32.store8
get_local $0
get_local $2
i32.add
i32.const 4
i32.sub
get_local $1
i32.store8
get_local $2
i32.const 8
i32.le_u
if
return
end
i32.const 0
get_local $0
i32.sub
i32.const 3
i32.and
set_local $3
get_local $0
get_local $3
i32.add
set_local $0
get_local $2
get_local $3
i32.sub
set_local $2
get_local $2
i32.const -4
i32.and
set_local $2
i32.const -1
i32.const 255
i32.div_u
get_local $1
i32.const 255
i32.and
i32.mul
set_local $4
get_local $0
get_local $4
i32.store
get_local $0
get_local $2
i32.add
i32.const 4
i32.sub
get_local $4
i32.store
get_local $2
i32.const 8
i32.le_u
if
return
end
get_local $0
i32.const 4
i32.add
get_local $4
i32.store
get_local $0
i32.const 8
i32.add
get_local $4
i32.store
get_local $0
get_local $2
i32.add
i32.const 12
i32.sub
get_local $4
i32.store
get_local $0
get_local $2
i32.add
i32.const 8
i32.sub
get_local $4
i32.store
get_local $2
i32.const 24
i32.le_u
if
return
end
get_local $0
i32.const 12
i32.add
get_local $4
i32.store
get_local $0
i32.const 16
i32.add
get_local $4
i32.store
get_local $0
i32.const 20
i32.add
get_local $4
i32.store
get_local $0
i32.const 24
i32.add
get_local $4
i32.store
get_local $0
get_local $2
i32.add
i32.const 28
i32.sub
get_local $4
i32.store
get_local $0
get_local $2
i32.add
i32.const 24
i32.sub
get_local $4
i32.store
get_local $0
get_local $2
i32.add
i32.const 20
i32.sub
get_local $4
i32.store
get_local $0
get_local $2
i32.add
i32.const 16
i32.sub
get_local $4
i32.store
i32.const 24
get_local $0
i32.const 4
i32.and
i32.add
set_local $3
get_local $0
get_local $3
i32.add
set_local $0
get_local $2
get_local $3
i32.sub
set_local $2
get_local $4
i64.extend_u/i32
get_local $4
i64.extend_u/i32
i64.const 32
i64.shl
i64.or
set_local $5
block $break|0
loop $continue|0
get_local $2
i32.const 32
i32.ge_u
if
block
get_local $0
get_local $5
i64.store
get_local $0
i32.const 8
i32.add
get_local $5
i64.store
get_local $0
i32.const 16
i32.add
get_local $5
i64.store
get_local $0
i32.const 24
i32.add
get_local $5
i64.store
get_local $2
i32.const 32
i32.sub
set_local $2
get_local $0
i32.const 32
i32.add
set_local $0
end
br $continue|0
end
end
end
)
(func $~lib/internal/arraybuffer/__gc (; 22 ;) (type $iv) (param $0 i32)
(func $~lib/internal/arraybuffer/__gc (; 21 ;) (type $iv) (param $0 i32)
nop
)
(func $~lib/internal/arraybuffer/allocateUnsafe (; 23 ;) (type $ii) (param $0 i32) (result i32)
(func $~lib/internal/arraybuffer/allocateUnsafe (; 22 ;) (type $ii) (param $0 i32) (result i32)
(local $1 i32)
get_local $0
get_global $~lib/internal/arraybuffer/MAX_BLENGTH
@ -839,7 +585,7 @@
i32.store
get_local $1
)
(func $~lib/internal/memory/memcpy (; 24 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32)
(func $~lib/internal/memory/memcpy (; 23 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32)
(local $3 i32)
(local $4 i32)
(local $5 i32)
@ -2040,7 +1786,7 @@
i32.store8
end
)
(func $~lib/internal/memory/memmove (; 25 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32)
(func $~lib/internal/memory/memmove (; 24 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32)
(local $3 i32)
get_local $0
get_local $1
@ -2267,12 +2013,265 @@
end
end
)
(func $~lib/internal/memory/memset (; 25 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32)
(local $3 i32)
(local $4 i32)
(local $5 i64)
get_local $2
i32.eqz
if
return
end
get_local $0
get_local $1
i32.store8
get_local $0
get_local $2
i32.add
i32.const 1
i32.sub
get_local $1
i32.store8
get_local $2
i32.const 2
i32.le_u
if
return
end
get_local $0
i32.const 1
i32.add
get_local $1
i32.store8
get_local $0
i32.const 2
i32.add
get_local $1
i32.store8
get_local $0
get_local $2
i32.add
i32.const 2
i32.sub
get_local $1
i32.store8
get_local $0
get_local $2
i32.add
i32.const 3
i32.sub
get_local $1
i32.store8
get_local $2
i32.const 6
i32.le_u
if
return
end
get_local $0
i32.const 3
i32.add
get_local $1
i32.store8
get_local $0
get_local $2
i32.add
i32.const 4
i32.sub
get_local $1
i32.store8
get_local $2
i32.const 8
i32.le_u
if
return
end
i32.const 0
get_local $0
i32.sub
i32.const 3
i32.and
set_local $3
get_local $0
get_local $3
i32.add
set_local $0
get_local $2
get_local $3
i32.sub
set_local $2
get_local $2
i32.const -4
i32.and
set_local $2
i32.const -1
i32.const 255
i32.div_u
get_local $1
i32.const 255
i32.and
i32.mul
set_local $4
get_local $0
get_local $4
i32.store
get_local $0
get_local $2
i32.add
i32.const 4
i32.sub
get_local $4
i32.store
get_local $2
i32.const 8
i32.le_u
if
return
end
get_local $0
i32.const 4
i32.add
get_local $4
i32.store
get_local $0
i32.const 8
i32.add
get_local $4
i32.store
get_local $0
get_local $2
i32.add
i32.const 12
i32.sub
get_local $4
i32.store
get_local $0
get_local $2
i32.add
i32.const 8
i32.sub
get_local $4
i32.store
get_local $2
i32.const 24
i32.le_u
if
return
end
get_local $0
i32.const 12
i32.add
get_local $4
i32.store
get_local $0
i32.const 16
i32.add
get_local $4
i32.store
get_local $0
i32.const 20
i32.add
get_local $4
i32.store
get_local $0
i32.const 24
i32.add
get_local $4
i32.store
get_local $0
get_local $2
i32.add
i32.const 28
i32.sub
get_local $4
i32.store
get_local $0
get_local $2
i32.add
i32.const 24
i32.sub
get_local $4
i32.store
get_local $0
get_local $2
i32.add
i32.const 20
i32.sub
get_local $4
i32.store
get_local $0
get_local $2
i32.add
i32.const 16
i32.sub
get_local $4
i32.store
i32.const 24
get_local $0
i32.const 4
i32.and
i32.add
set_local $3
get_local $0
get_local $3
i32.add
set_local $0
get_local $2
get_local $3
i32.sub
set_local $2
get_local $4
i64.extend_u/i32
get_local $4
i64.extend_u/i32
i64.const 32
i64.shl
i64.or
set_local $5
block $break|0
loop $continue|0
get_local $2
i32.const 32
i32.ge_u
if
block
get_local $0
get_local $5
i64.store
get_local $0
i32.const 8
i32.add
get_local $5
i64.store
get_local $0
i32.const 16
i32.add
get_local $5
i64.store
get_local $0
i32.const 24
i32.add
get_local $5
i64.store
get_local $2
i32.const 32
i32.sub
set_local $2
get_local $0
i32.const 32
i32.add
set_local $0
end
br $continue|0
end
end
end
)
(func $~lib/internal/arraybuffer/reallocateUnsafe (; 26 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32)
(local $3 i32)
(local $4 i32)
(local $5 i32)
(local $6 i32)
get_local $0
i32.load
set_local $2
@ -2302,57 +2301,41 @@
get_local $0
get_local $1
i32.store
get_local $0
get_global $~lib/internal/arraybuffer/HEADER_SIZE
i32.add
get_local $2
i32.add
set_local $3
i32.const 0
set_local $4
get_local $1
get_local $2
i32.sub
set_local $5
get_local $3
get_local $4
get_local $5
call $~lib/internal/memory/memset
else
get_local $1
call $~lib/internal/arraybuffer/allocateUnsafe
set_local $5
get_local $5
set_local $3
get_local $3
get_global $~lib/internal/arraybuffer/HEADER_SIZE
i32.add
set_local $4
get_local $0
get_global $~lib/internal/arraybuffer/HEADER_SIZE
i32.add
set_local $3
set_local $5
get_local $4
get_local $3
get_local $5
get_local $2
call $~lib/internal/memory/memmove
get_local $5
get_local $3
set_local $0
end
get_local $0
get_global $~lib/internal/arraybuffer/HEADER_SIZE
i32.add
get_local $2
i32.add
set_local $3
i32.const 0
set_local $4
set_local $5
get_local $1
get_local $2
i32.sub
set_local $6
set_local $4
get_local $3
get_local $4
get_local $6
call $~lib/internal/memory/memset
get_local $5
return
end
get_local $4
call $~lib/internal/memory/memset
else
get_local $1
get_local $2
@ -2365,7 +2348,7 @@
if
i32.const 0
i32.const 120
i32.const 64
i32.const 62
i32.const 4
call $~lib/env/abort
unreachable

View File

@ -28,226 +28,7 @@
(export "memory" (memory $0))
(export "table" (table $0))
(start $start)
(func $~lib/internal/memory/memset (; 1 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
(local $2 i32)
get_local $1
i32.eqz
if
return
end
get_local $0
i32.const 0
i32.store8
get_local $0
get_local $1
i32.add
i32.const 1
i32.sub
i32.const 0
i32.store8
get_local $1
i32.const 2
i32.le_u
if
return
end
get_local $0
i32.const 1
i32.add
i32.const 0
i32.store8
get_local $0
i32.const 2
i32.add
i32.const 0
i32.store8
get_local $0
get_local $1
i32.add
tee_local $2
i32.const 2
i32.sub
i32.const 0
i32.store8
get_local $2
i32.const 3
i32.sub
i32.const 0
i32.store8
get_local $1
i32.const 6
i32.le_u
if
return
end
get_local $0
i32.const 3
i32.add
i32.const 0
i32.store8
get_local $0
get_local $1
i32.add
i32.const 4
i32.sub
i32.const 0
i32.store8
get_local $1
i32.const 8
i32.le_u
if
return
end
i32.const 0
get_local $0
i32.sub
i32.const 3
i32.and
tee_local $2
get_local $0
i32.add
tee_local $0
i32.const 0
i32.store
get_local $1
get_local $2
i32.sub
i32.const -4
i32.and
tee_local $1
get_local $0
i32.add
i32.const 4
i32.sub
i32.const 0
i32.store
get_local $1
i32.const 8
i32.le_u
if
return
end
get_local $0
i32.const 4
i32.add
i32.const 0
i32.store
get_local $0
i32.const 8
i32.add
i32.const 0
i32.store
get_local $0
get_local $1
i32.add
tee_local $2
i32.const 12
i32.sub
i32.const 0
i32.store
get_local $2
i32.const 8
i32.sub
i32.const 0
i32.store
get_local $1
i32.const 24
i32.le_u
if
return
end
get_local $0
i32.const 12
i32.add
i32.const 0
i32.store
get_local $0
i32.const 16
i32.add
i32.const 0
i32.store
get_local $0
i32.const 20
i32.add
i32.const 0
i32.store
get_local $0
i32.const 24
i32.add
i32.const 0
i32.store
get_local $0
get_local $1
i32.add
tee_local $2
i32.const 28
i32.sub
i32.const 0
i32.store
get_local $2
i32.const 24
i32.sub
i32.const 0
i32.store
get_local $2
i32.const 20
i32.sub
i32.const 0
i32.store
get_local $2
i32.const 16
i32.sub
i32.const 0
i32.store
get_local $0
i32.const 4
i32.and
i32.const 24
i32.add
tee_local $2
get_local $0
i32.add
set_local $0
get_local $1
get_local $2
i32.sub
set_local $1
loop $continue|0
get_local $1
i32.const 32
i32.ge_u
if
get_local $0
i64.const 0
i64.store
get_local $0
i32.const 8
i32.add
i64.const 0
i64.store
get_local $0
i32.const 16
i32.add
i64.const 0
i64.store
get_local $0
i32.const 24
i32.add
i64.const 0
i64.store
get_local $1
i32.const 32
i32.sub
set_local $1
get_local $0
i32.const 32
i32.add
set_local $0
br $continue|0
end
end
)
(func $~lib/allocator/arena/__memory_allocate (; 2 ;) (type $ii) (param $0 i32) (result i32)
(func $~lib/allocator/arena/__memory_allocate (; 1 ;) (type $ii) (param $0 i32) (result i32)
(local $1 i32)
(local $2 i32)
(local $3 i32)
@ -309,7 +90,7 @@
set_global $~lib/allocator/arena/offset
get_local $1
)
(func $~lib/internal/arraybuffer/allocateUnsafe (; 3 ;) (type $ii) (param $0 i32) (result i32)
(func $~lib/internal/arraybuffer/allocateUnsafe (; 2 ;) (type $ii) (param $0 i32) (result i32)
(local $1 i32)
get_local $0
i32.const 1073741816
@ -336,7 +117,7 @@
i32.store
get_local $1
)
(func $~lib/internal/memory/memcpy (; 4 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32)
(func $~lib/internal/memory/memcpy (; 3 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32)
(local $3 i32)
(local $4 i32)
(local $5 i32)
@ -1240,7 +1021,7 @@
i32.store8
end
)
(func $~lib/internal/memory/memmove (; 5 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32)
(func $~lib/internal/memory/memmove (; 4 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32)
(local $3 i32)
(local $4 i32)
get_local $0
@ -1440,10 +1221,228 @@
end
end
)
(func $~lib/internal/memory/memset (; 5 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
(local $2 i32)
get_local $1
i32.eqz
if
return
end
get_local $0
i32.const 0
i32.store8
get_local $0
get_local $1
i32.add
i32.const 1
i32.sub
i32.const 0
i32.store8
get_local $1
i32.const 2
i32.le_u
if
return
end
get_local $0
i32.const 1
i32.add
i32.const 0
i32.store8
get_local $0
i32.const 2
i32.add
i32.const 0
i32.store8
get_local $0
get_local $1
i32.add
tee_local $2
i32.const 2
i32.sub
i32.const 0
i32.store8
get_local $2
i32.const 3
i32.sub
i32.const 0
i32.store8
get_local $1
i32.const 6
i32.le_u
if
return
end
get_local $0
i32.const 3
i32.add
i32.const 0
i32.store8
get_local $0
get_local $1
i32.add
i32.const 4
i32.sub
i32.const 0
i32.store8
get_local $1
i32.const 8
i32.le_u
if
return
end
i32.const 0
get_local $0
i32.sub
i32.const 3
i32.and
tee_local $2
get_local $0
i32.add
tee_local $0
i32.const 0
i32.store
get_local $1
get_local $2
i32.sub
i32.const -4
i32.and
tee_local $1
get_local $0
i32.add
i32.const 4
i32.sub
i32.const 0
i32.store
get_local $1
i32.const 8
i32.le_u
if
return
end
get_local $0
i32.const 4
i32.add
i32.const 0
i32.store
get_local $0
i32.const 8
i32.add
i32.const 0
i32.store
get_local $0
get_local $1
i32.add
tee_local $2
i32.const 12
i32.sub
i32.const 0
i32.store
get_local $2
i32.const 8
i32.sub
i32.const 0
i32.store
get_local $1
i32.const 24
i32.le_u
if
return
end
get_local $0
i32.const 12
i32.add
i32.const 0
i32.store
get_local $0
i32.const 16
i32.add
i32.const 0
i32.store
get_local $0
i32.const 20
i32.add
i32.const 0
i32.store
get_local $0
i32.const 24
i32.add
i32.const 0
i32.store
get_local $0
get_local $1
i32.add
tee_local $2
i32.const 28
i32.sub
i32.const 0
i32.store
get_local $2
i32.const 24
i32.sub
i32.const 0
i32.store
get_local $2
i32.const 20
i32.sub
i32.const 0
i32.store
get_local $2
i32.const 16
i32.sub
i32.const 0
i32.store
get_local $0
i32.const 4
i32.and
i32.const 24
i32.add
tee_local $2
get_local $0
i32.add
set_local $0
get_local $1
get_local $2
i32.sub
set_local $1
loop $continue|0
get_local $1
i32.const 32
i32.ge_u
if
get_local $0
i64.const 0
i64.store
get_local $0
i32.const 8
i32.add
i64.const 0
i64.store
get_local $0
i32.const 16
i32.add
i64.const 0
i64.store
get_local $0
i32.const 24
i32.add
i64.const 0
i64.store
get_local $1
i32.const 32
i32.sub
set_local $1
get_local $0
i32.const 32
i32.add
set_local $0
br $continue|0
end
end
)
(func $~lib/internal/arraybuffer/reallocateUnsafe (; 6 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32)
(local $3 i32)
(local $4 i32)
get_local $1
get_local $0
i32.load
@ -1477,37 +1476,29 @@
get_local $0
get_local $1
i32.store
get_local $0
i32.const 8
i32.add
get_local $2
i32.add
get_local $1
get_local $2
i32.sub
call $~lib/internal/memory/memset
else
get_local $1
call $~lib/internal/arraybuffer/allocateUnsafe
tee_local $3
i32.const 8
i32.add
tee_local $4
get_local $0
i32.const 8
i32.add
get_local $2
call $~lib/internal/memory/memmove
get_local $3
set_local $0
end
get_local $0
i32.const 8
i32.add
get_local $2
get_local $4
i32.add
get_local $1
get_local $2
i32.sub
call $~lib/internal/memory/memset
get_local $3
return
end
else
get_local $1
get_local $2
@ -1519,7 +1510,7 @@
if
i32.const 0
i32.const 216
i32.const 64
i32.const 62
i32.const 4
call $~lib/env/abort
unreachable

View File

@ -3,6 +3,7 @@
(type $iii (func (param i32 i32) (result i32)))
(type $iiiv (func (param i32 i32 i32)))
(type $ii (func (param i32) (result i32)))
(type $iv (func (param i32)))
(type $iiI (func (param i32 i32) (result i64)))
(type $iiIv (func (param i32 i32 i64)))
(type $iif (func (param i32 i32) (result f32)))
@ -80,261 +81,7 @@
i32.sub
i32.shl
)
(func $~lib/internal/memory/memset (; 3 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32)
(local $3 i32)
(local $4 i32)
(local $5 i64)
get_local $2
i32.eqz
if
return
end
get_local $0
get_local $1
i32.store8
get_local $0
get_local $2
i32.add
i32.const 1
i32.sub
get_local $1
i32.store8
get_local $2
i32.const 2
i32.le_u
if
return
end
get_local $0
i32.const 1
i32.add
get_local $1
i32.store8
get_local $0
i32.const 2
i32.add
get_local $1
i32.store8
get_local $0
get_local $2
i32.add
i32.const 2
i32.sub
get_local $1
i32.store8
get_local $0
get_local $2
i32.add
i32.const 3
i32.sub
get_local $1
i32.store8
get_local $2
i32.const 6
i32.le_u
if
return
end
get_local $0
i32.const 3
i32.add
get_local $1
i32.store8
get_local $0
get_local $2
i32.add
i32.const 4
i32.sub
get_local $1
i32.store8
get_local $2
i32.const 8
i32.le_u
if
return
end
i32.const 0
get_local $0
i32.sub
i32.const 3
i32.and
set_local $3
get_local $0
get_local $3
i32.add
set_local $0
get_local $2
get_local $3
i32.sub
set_local $2
get_local $2
i32.const -4
i32.and
set_local $2
i32.const -1
i32.const 255
i32.div_u
get_local $1
i32.const 255
i32.and
i32.mul
set_local $4
get_local $0
get_local $4
i32.store
get_local $0
get_local $2
i32.add
i32.const 4
i32.sub
get_local $4
i32.store
get_local $2
i32.const 8
i32.le_u
if
return
end
get_local $0
i32.const 4
i32.add
get_local $4
i32.store
get_local $0
i32.const 8
i32.add
get_local $4
i32.store
get_local $0
get_local $2
i32.add
i32.const 12
i32.sub
get_local $4
i32.store
get_local $0
get_local $2
i32.add
i32.const 8
i32.sub
get_local $4
i32.store
get_local $2
i32.const 24
i32.le_u
if
return
end
get_local $0
i32.const 12
i32.add
get_local $4
i32.store
get_local $0
i32.const 16
i32.add
get_local $4
i32.store
get_local $0
i32.const 20
i32.add
get_local $4
i32.store
get_local $0
i32.const 24
i32.add
get_local $4
i32.store
get_local $0
get_local $2
i32.add
i32.const 28
i32.sub
get_local $4
i32.store
get_local $0
get_local $2
i32.add
i32.const 24
i32.sub
get_local $4
i32.store
get_local $0
get_local $2
i32.add
i32.const 20
i32.sub
get_local $4
i32.store
get_local $0
get_local $2
i32.add
i32.const 16
i32.sub
get_local $4
i32.store
i32.const 24
get_local $0
i32.const 4
i32.and
i32.add
set_local $3
get_local $0
get_local $3
i32.add
set_local $0
get_local $2
get_local $3
i32.sub
set_local $2
get_local $4
i64.extend_u/i32
get_local $4
i64.extend_u/i32
i64.const 32
i64.shl
i64.or
set_local $5
block $break|0
loop $continue|0
get_local $2
i32.const 32
i32.ge_u
if
block
get_local $0
get_local $5
i64.store
get_local $0
i32.const 8
i32.add
get_local $5
i64.store
get_local $0
i32.const 16
i32.add
get_local $5
i64.store
get_local $0
i32.const 24
i32.add
get_local $5
i64.store
get_local $2
i32.const 32
i32.sub
set_local $2
get_local $0
i32.const 32
i32.add
set_local $0
end
br $continue|0
end
end
end
)
(func $~lib/allocator/arena/__memory_allocate (; 4 ;) (type $ii) (param $0 i32) (result i32)
(func $~lib/allocator/arena/__memory_allocate (; 3 ;) (type $ii) (param $0 i32) (result i32)
(local $1 i32)
(local $2 i32)
(local $3 i32)
@ -413,7 +160,7 @@
set_global $~lib/allocator/arena/offset
get_local $1
)
(func $~lib/internal/arraybuffer/allocateUnsafe (; 5 ;) (type $ii) (param $0 i32) (result i32)
(func $~lib/internal/arraybuffer/allocateUnsafe (; 4 ;) (type $ii) (param $0 i32) (result i32)
(local $1 i32)
(local $2 i32)
get_local $0
@ -442,7 +189,7 @@
i32.store
get_local $1
)
(func $~lib/internal/memory/memcpy (; 6 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32)
(func $~lib/internal/memory/memcpy (; 5 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32)
(local $3 i32)
(local $4 i32)
(local $5 i32)
@ -1643,7 +1390,7 @@
i32.store8
end
)
(func $~lib/internal/memory/memmove (; 7 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32)
(func $~lib/internal/memory/memmove (; 6 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32)
(local $3 i32)
get_local $0
get_local $1
@ -1870,12 +1617,268 @@
end
end
)
(func $~lib/internal/arraybuffer/reallocateUnsafe (; 8 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(func $~lib/allocator/arena/__memory_free (; 7 ;) (type $iv) (param $0 i32)
nop
)
(func $~lib/internal/memory/memset (; 8 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32)
(local $3 i32)
(local $4 i32)
(local $5 i64)
get_local $2
i32.eqz
if
return
end
get_local $0
get_local $1
i32.store8
get_local $0
get_local $2
i32.add
i32.const 1
i32.sub
get_local $1
i32.store8
get_local $2
i32.const 2
i32.le_u
if
return
end
get_local $0
i32.const 1
i32.add
get_local $1
i32.store8
get_local $0
i32.const 2
i32.add
get_local $1
i32.store8
get_local $0
get_local $2
i32.add
i32.const 2
i32.sub
get_local $1
i32.store8
get_local $0
get_local $2
i32.add
i32.const 3
i32.sub
get_local $1
i32.store8
get_local $2
i32.const 6
i32.le_u
if
return
end
get_local $0
i32.const 3
i32.add
get_local $1
i32.store8
get_local $0
get_local $2
i32.add
i32.const 4
i32.sub
get_local $1
i32.store8
get_local $2
i32.const 8
i32.le_u
if
return
end
i32.const 0
get_local $0
i32.sub
i32.const 3
i32.and
set_local $3
get_local $0
get_local $3
i32.add
set_local $0
get_local $2
get_local $3
i32.sub
set_local $2
get_local $2
i32.const -4
i32.and
set_local $2
i32.const -1
i32.const 255
i32.div_u
get_local $1
i32.const 255
i32.and
i32.mul
set_local $4
get_local $0
get_local $4
i32.store
get_local $0
get_local $2
i32.add
i32.const 4
i32.sub
get_local $4
i32.store
get_local $2
i32.const 8
i32.le_u
if
return
end
get_local $0
i32.const 4
i32.add
get_local $4
i32.store
get_local $0
i32.const 8
i32.add
get_local $4
i32.store
get_local $0
get_local $2
i32.add
i32.const 12
i32.sub
get_local $4
i32.store
get_local $0
get_local $2
i32.add
i32.const 8
i32.sub
get_local $4
i32.store
get_local $2
i32.const 24
i32.le_u
if
return
end
get_local $0
i32.const 12
i32.add
get_local $4
i32.store
get_local $0
i32.const 16
i32.add
get_local $4
i32.store
get_local $0
i32.const 20
i32.add
get_local $4
i32.store
get_local $0
i32.const 24
i32.add
get_local $4
i32.store
get_local $0
get_local $2
i32.add
i32.const 28
i32.sub
get_local $4
i32.store
get_local $0
get_local $2
i32.add
i32.const 24
i32.sub
get_local $4
i32.store
get_local $0
get_local $2
i32.add
i32.const 20
i32.sub
get_local $4
i32.store
get_local $0
get_local $2
i32.add
i32.const 16
i32.sub
get_local $4
i32.store
i32.const 24
get_local $0
i32.const 4
i32.and
i32.add
set_local $3
get_local $0
get_local $3
i32.add
set_local $0
get_local $2
get_local $3
i32.sub
set_local $2
get_local $4
i64.extend_u/i32
get_local $4
i64.extend_u/i32
i64.const 32
i64.shl
i64.or
set_local $5
block $break|0
loop $continue|0
get_local $2
i32.const 32
i32.ge_u
if
block
get_local $0
get_local $5
i64.store
get_local $0
i32.const 8
i32.add
get_local $5
i64.store
get_local $0
i32.const 16
i32.add
get_local $5
i64.store
get_local $0
i32.const 24
i32.add
get_local $5
i64.store
get_local $2
i32.const 32
i32.sub
set_local $2
get_local $0
i32.const 32
i32.add
set_local $0
end
br $continue|0
end
end
end
)
(func $~lib/internal/arraybuffer/reallocateUnsafe (; 9 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32)
(local $3 i32)
(local $4 i32)
(local $5 i32)
(local $6 i32)
get_local $0
i32.load
set_local $2
@ -1905,57 +1908,50 @@
get_local $0
get_local $1
i32.store
get_local $0
get_global $~lib/internal/arraybuffer/HEADER_SIZE
i32.add
get_local $2
i32.add
set_local $3
i32.const 0
set_local $4
get_local $1
get_local $2
i32.sub
set_local $5
get_local $3
get_local $4
get_local $5
call $~lib/internal/memory/memset
else
get_local $1
call $~lib/internal/arraybuffer/allocateUnsafe
set_local $5
get_local $5
set_local $3
get_local $3
get_global $~lib/internal/arraybuffer/HEADER_SIZE
i32.add
set_local $4
get_local $0
get_global $~lib/internal/arraybuffer/HEADER_SIZE
i32.add
set_local $3
set_local $5
get_local $4
get_local $3
get_local $5
get_local $2
call $~lib/internal/memory/memmove
get_local $5
block $~lib/memory/memory.free|inlined.0
block
get_local $0
call $~lib/allocator/arena/__memory_free
br $~lib/memory/memory.free|inlined.0
unreachable
end
unreachable
end
get_local $3
set_local $0
end
get_local $0
get_global $~lib/internal/arraybuffer/HEADER_SIZE
i32.add
get_local $2
i32.add
set_local $3
i32.const 0
set_local $4
set_local $5
get_local $1
get_local $2
i32.sub
set_local $6
set_local $4
get_local $3
get_local $4
get_local $6
call $~lib/internal/memory/memset
get_local $5
return
end
get_local $4
call $~lib/internal/memory/memset
else
get_local $1
get_local $2
@ -1968,7 +1964,7 @@
if
i32.const 0
i32.const 216
i32.const 64
i32.const 62
i32.const 4
call $~lib/env/abort
unreachable
@ -1980,7 +1976,7 @@
end
get_local $0
)
(func $~lib/array/Array<i32>#__set (; 9 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32)
(func $~lib/array/Array<i32>#__set (; 10 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32)
(local $3 i32)
(local $4 i32)
(local $5 i32)
@ -2036,7 +2032,7 @@
get_local $2
i32.store offset=8
)
(func $~lib/array/Array<i64>#__get (; 10 ;) (type $iiI) (param $0 i32) (param $1 i32) (result i64)
(func $~lib/array/Array<i64>#__get (; 11 ;) (type $iiI) (param $0 i32) (param $1 i32) (result i64)
(local $2 i32)
(local $3 i32)
get_local $0
@ -2063,7 +2059,7 @@
unreachable
end
)
(func $~lib/array/Array<i64>#__set (; 11 ;) (type $iiIv) (param $0 i32) (param $1 i32) (param $2 i64)
(func $~lib/array/Array<i64>#__set (; 12 ;) (type $iiIv) (param $0 i32) (param $1 i32) (param $2 i64)
(local $3 i32)
(local $4 i32)
(local $5 i32)
@ -2119,7 +2115,7 @@
get_local $2
i64.store offset=8
)
(func $~lib/array/Array<f32>#__get (; 12 ;) (type $iif) (param $0 i32) (param $1 i32) (result f32)
(func $~lib/array/Array<f32>#__get (; 13 ;) (type $iif) (param $0 i32) (param $1 i32) (result f32)
(local $2 i32)
(local $3 i32)
get_local $0
@ -2146,7 +2142,7 @@
unreachable
end
)
(func $~lib/array/Array<f32>#__set (; 13 ;) (type $iifv) (param $0 i32) (param $1 i32) (param $2 f32)
(func $~lib/array/Array<f32>#__set (; 14 ;) (type $iifv) (param $0 i32) (param $1 i32) (param $2 f32)
(local $3 i32)
(local $4 i32)
(local $5 i32)
@ -2202,7 +2198,7 @@
get_local $2
f32.store offset=8
)
(func $~lib/array/Array<f64>#__get (; 14 ;) (type $iiF) (param $0 i32) (param $1 i32) (result f64)
(func $~lib/array/Array<f64>#__get (; 15 ;) (type $iiF) (param $0 i32) (param $1 i32) (result f64)
(local $2 i32)
(local $3 i32)
get_local $0
@ -2229,7 +2225,7 @@
unreachable
end
)
(func $~lib/array/Array<f64>#__set (; 15 ;) (type $iiFv) (param $0 i32) (param $1 i32) (param $2 f64)
(func $~lib/array/Array<f64>#__set (; 16 ;) (type $iiFv) (param $0 i32) (param $1 i32) (param $2 f64)
(local $3 i32)
(local $4 i32)
(local $5 i32)
@ -2285,7 +2281,7 @@
get_local $2
f64.store offset=8
)
(func $start (; 16 ;) (type $v)
(func $start (; 17 ;) (type $v)
(local $0 i32)
get_global $HEAP_BASE
get_global $~lib/internal/allocator/AL_MASK
@ -2550,6 +2546,6 @@
unreachable
end
)
(func $null (; 17 ;) (type $v)
(func $null (; 18 ;) (type $v)
)
)

View File

@ -3339,7 +3339,6 @@
(func $~lib/internal/arraybuffer/reallocateUnsafe (; 36 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32)
(local $3 i32)
(local $4 i32)
get_local $1
get_local $0
i32.load
@ -3373,37 +3372,29 @@
get_local $0
get_local $1
i32.store
get_local $0
i32.const 8
i32.add
get_local $2
i32.add
get_local $1
get_local $2
i32.sub
call $~lib/internal/memory/memset
else
get_local $1
call $~lib/internal/arraybuffer/allocateUnsafe
tee_local $3
i32.const 8
i32.add
tee_local $4
get_local $0
i32.const 8
i32.add
get_local $2
call $~lib/internal/memory/memmove
get_local $3
set_local $0
end
get_local $0
i32.const 8
i32.add
get_local $2
get_local $4
i32.add
get_local $1
get_local $2
i32.sub
call $~lib/internal/memory/memset
get_local $3
return
end
else
get_local $1
get_local $2
@ -3415,7 +3406,7 @@
if
i32.const 0
i32.const 1008
i32.const 64
i32.const 62
i32.const 4
call $~lib/env/abort
unreachable

View File

@ -9,12 +9,12 @@
(type $i (func (result i32)))
(type $iiF (func (param i32 i32) (result f64)))
(type $iF (func (param i32) (result f64)))
(type $iv (func (param i32)))
(type $Ii (func (param i64) (result i32)))
(type $iIiv (func (param i32 i64 i32)))
(type $Fi (func (param f64) (result i32)))
(type $iFi (func (param i32 f64) (result i32)))
(type $iIiIiIii (func (param i32 i64 i32 i64 i32 i64 i32) (result i32)))
(type $iv (func (param i32)))
(type $v (func))
(import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32)))
(memory $0 1)
@ -4169,12 +4169,14 @@
get_local $2
i32.store offset=8
)
(func $~lib/internal/arraybuffer/reallocateUnsafe (; 40 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(func $~lib/allocator/arena/__memory_free (; 40 ;) (type $iv) (param $0 i32)
nop
)
(func $~lib/internal/arraybuffer/reallocateUnsafe (; 41 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32)
(local $3 i32)
(local $4 i32)
(local $5 i32)
(local $6 i32)
get_local $0
i32.load
set_local $2
@ -4204,57 +4206,50 @@
get_local $0
get_local $1
i32.store
get_local $0
get_global $~lib/internal/arraybuffer/HEADER_SIZE
i32.add
get_local $2
i32.add
set_local $3
i32.const 0
set_local $4
get_local $1
get_local $2
i32.sub
set_local $5
get_local $3
get_local $4
get_local $5
call $~lib/internal/memory/memset
else
get_local $1
call $~lib/internal/arraybuffer/allocateUnsafe
set_local $5
get_local $5
set_local $3
get_local $3
get_global $~lib/internal/arraybuffer/HEADER_SIZE
i32.add
set_local $4
get_local $0
get_global $~lib/internal/arraybuffer/HEADER_SIZE
i32.add
set_local $3
set_local $5
get_local $4
get_local $3
get_local $5
get_local $2
call $~lib/internal/memory/memmove
get_local $5
block $~lib/memory/memory.free|inlined.0
block
get_local $0
call $~lib/allocator/arena/__memory_free
br $~lib/memory/memory.free|inlined.0
unreachable
end
unreachable
end
get_local $3
set_local $0
end
get_local $0
get_global $~lib/internal/arraybuffer/HEADER_SIZE
i32.add
get_local $2
i32.add
set_local $3
i32.const 0
set_local $4
set_local $5
get_local $1
get_local $2
i32.sub
set_local $6
set_local $4
get_local $3
get_local $4
get_local $6
call $~lib/internal/memory/memset
get_local $5
return
end
get_local $4
call $~lib/internal/memory/memset
else
get_local $1
get_local $2
@ -4267,7 +4262,7 @@
if
i32.const 0
i32.const 1008
i32.const 64
i32.const 62
i32.const 4
call $~lib/env/abort
unreachable
@ -4279,7 +4274,7 @@
end
get_local $0
)
(func $~lib/array/Array<String>#push (; 41 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(func $~lib/array/Array<String>#push (; 42 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32)
(local $3 i32)
(local $4 i32)
@ -4341,7 +4336,7 @@
i32.store offset=8
get_local $5
)
(func $~lib/string/String#split (; 42 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(func $~lib/string/String#split (; 43 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(local $3 i32)
(local $4 i32)
(local $5 i32)
@ -4596,7 +4591,7 @@
end
get_local $10
)
(func $~lib/string/String#split|trampoline (; 43 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(func $~lib/string/String#split|trampoline (; 44 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
block $2of2
block $1of2
block $0of2
@ -4617,7 +4612,7 @@
get_local $2
call $~lib/string/String#split
)
(func $~lib/array/Array<String>#__get (; 44 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(func $~lib/array/Array<String>#__get (; 45 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32)
(local $3 i32)
get_local $0
@ -4644,7 +4639,7 @@
unreachable
end
)
(func $~lib/internal/number/decimalCount32 (; 45 ;) (type $ii) (param $0 i32) (result i32)
(func $~lib/internal/number/decimalCount32 (; 46 ;) (type $ii) (param $0 i32) (result i32)
(local $1 i32)
get_local $0
i32.const 100000
@ -4713,7 +4708,7 @@
unreachable
unreachable
)
(func $~lib/internal/number/utoa32_lut (; 46 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32)
(func $~lib/internal/number/utoa32_lut (; 47 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32)
(local $3 i32)
(local $4 i32)
(local $5 i32)
@ -4883,7 +4878,7 @@
i32.store16 offset=4
end
)
(func $~lib/internal/number/itoa32 (; 47 ;) (type $ii) (param $0 i32) (result i32)
(func $~lib/internal/number/itoa32 (; 48 ;) (type $ii) (param $0 i32) (result i32)
(local $1 i32)
(local $2 i32)
(local $3 i32)
@ -4924,7 +4919,7 @@
end
get_local $3
)
(func $~lib/internal/number/utoa32 (; 48 ;) (type $ii) (param $0 i32) (result i32)
(func $~lib/internal/number/utoa32 (; 49 ;) (type $ii) (param $0 i32) (result i32)
(local $1 i32)
(local $2 i32)
get_local $0
@ -4945,7 +4940,7 @@
call $~lib/internal/number/utoa32_lut
get_local $2
)
(func $~lib/internal/number/decimalCount64 (; 49 ;) (type $Ii) (param $0 i64) (result i32)
(func $~lib/internal/number/decimalCount64 (; 50 ;) (type $Ii) (param $0 i64) (result i32)
(local $1 i32)
get_local $0
i64.const 1000000000000000
@ -5014,7 +5009,7 @@
unreachable
unreachable
)
(func $~lib/internal/number/utoa64_lut (; 50 ;) (type $iIiv) (param $0 i32) (param $1 i64) (param $2 i32)
(func $~lib/internal/number/utoa64_lut (; 51 ;) (type $iIiv) (param $0 i32) (param $1 i64) (param $2 i32)
(local $3 i32)
(local $4 i64)
(local $5 i32)
@ -5169,7 +5164,7 @@
get_local $2
call $~lib/internal/number/utoa32_lut
)
(func $~lib/internal/number/utoa64 (; 51 ;) (type $Ii) (param $0 i64) (result i32)
(func $~lib/internal/number/utoa64 (; 52 ;) (type $Ii) (param $0 i64) (result i32)
(local $1 i32)
(local $2 i32)
(local $3 i32)
@ -5211,7 +5206,7 @@
end
get_local $1
)
(func $~lib/internal/number/itoa64 (; 52 ;) (type $Ii) (param $0 i64) (result i32)
(func $~lib/internal/number/itoa64 (; 53 ;) (type $Ii) (param $0 i64) (result i32)
(local $1 i32)
(local $2 i32)
(local $3 i32)
@ -5275,19 +5270,19 @@
end
get_local $2
)
(func $~lib/builtins/isFinite<f64> (; 53 ;) (type $Fi) (param $0 f64) (result i32)
(func $~lib/builtins/isFinite<f64> (; 54 ;) (type $Fi) (param $0 f64) (result i32)
get_local $0
get_local $0
f64.sub
f64.const 0
f64.eq
)
(func $~lib/builtins/isNaN<f64> (; 54 ;) (type $Fi) (param $0 f64) (result i32)
(func $~lib/builtins/isNaN<f64> (; 55 ;) (type $Fi) (param $0 f64) (result i32)
get_local $0
get_local $0
f64.ne
)
(func $~lib/internal/number/genDigits (; 55 ;) (type $iIiIiIii) (param $0 i32) (param $1 i64) (param $2 i32) (param $3 i64) (param $4 i32) (param $5 i64) (param $6 i32) (result i32)
(func $~lib/internal/number/genDigits (; 56 ;) (type $iIiIiIii) (param $0 i32) (param $1 i64) (param $2 i32) (param $3 i64) (param $4 i32) (param $5 i64) (param $6 i32) (result i32)
(local $7 i32)
(local $8 i64)
(local $9 i64)
@ -5843,7 +5838,7 @@
end
get_local $15
)
(func $~lib/internal/number/prettify (; 56 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(func $~lib/internal/number/prettify (; 57 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(local $3 i32)
(local $4 i32)
(local $5 i32)
@ -6187,7 +6182,7 @@
unreachable
unreachable
)
(func $~lib/internal/number/dtoa_core (; 57 ;) (type $iFi) (param $0 i32) (param $1 f64) (result i32)
(func $~lib/internal/number/dtoa_core (; 58 ;) (type $iFi) (param $0 i32) (param $1 f64) (result i32)
(local $2 i32)
(local $3 i64)
(local $4 i32)
@ -6626,7 +6621,7 @@
get_local $2
i32.add
)
(func $~lib/string/String#substring (; 58 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(func $~lib/string/String#substring (; 59 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(local $3 i32)
(local $4 i32)
(local $5 i32)
@ -6736,9 +6731,6 @@
call $~lib/internal/string/copyUnsafe
get_local $10
)
(func $~lib/allocator/arena/__memory_free (; 59 ;) (type $iv) (param $0 i32)
nop
)
(func $~lib/internal/number/dtoa (; 60 ;) (type $Fi) (param $0 f64) (result i32)
(local $1 i32)
(local $2 i32)
@ -6790,11 +6782,11 @@
call $~lib/env/abort
unreachable
end
block $~lib/memory/memory.free|inlined.0
block $~lib/memory/memory.free|inlined.1
block
get_local $1
call $~lib/allocator/arena/__memory_free
br $~lib/memory/memory.free|inlined.0
br $~lib/memory/memory.free|inlined.1
unreachable
end
unreachable