From cd290d920120aed3bbbd03ab9c2bd6d384518a0d Mon Sep 17 00:00:00 2001 From: "Liao.Peng" Date: Fri, 13 Dec 2019 10:43:42 +0800 Subject: [PATCH 1/4] 1. fix the bug to get get keys and value 2. Add test cases for map.keys and map.values Signed-off-by: Liao.Peng --- std/assembly/map.ts | 4 +- tests/compiler/std/map.optimized.wat | 10105 +++++++++++----- tests/compiler/std/map.ts | 16 + tests/compiler/std/map.untouched.wat | 15170 +++++++++++++++++++------ 4 files changed, 18815 insertions(+), 6480 deletions(-) diff --git a/std/assembly/map.ts b/std/assembly/map.ts index 29701da392..ec5df2257f 100644 --- a/std/assembly/map.ts +++ b/std/assembly/map.ts @@ -210,7 +210,7 @@ export class Map { for (let i = 0; i < size; ++i) { let entry = changetype>(start + i * ENTRY_SIZE()); if (!(entry.taggedNext & EMPTY)) { - keys.push(entry.key); + keys[length] = entry.key; ++length; } } @@ -227,7 +227,7 @@ export class Map { for (let i = 0; i < size; ++i) { let entry = changetype>(start + i * ENTRY_SIZE()); if (!(entry.taggedNext & EMPTY)) { - values.push(entry.value); + values[length] = entry.value; ++length; } } diff --git a/tests/compiler/std/map.optimized.wat b/tests/compiler/std/map.optimized.wat index 713ae86106..3b7d99eed3 100644 --- a/tests/compiler/std/map.optimized.wat +++ b/tests/compiler/std/map.optimized.wat @@ -11,12 +11,21 @@ (type $FUNCSIG$ij (func (param i64) (result i32))) (type $FUNCSIG$iiji (func (param i32 i64 i32) (result i32))) (type $FUNCSIG$viji (func (param i32 i64 i32))) + (type $FUNCSIG$viij (func (param i32 i32 i64))) + (type $FUNCSIG$jii (func (param i32 i32) (result i64))) + (type $FUNCSIG$vijj (func (param i32 i64 i64))) (type $FUNCSIG$iif (func (param i32 f32) (result i32))) (type $FUNCSIG$iifi (func (param i32 f32 i32) (result i32))) (type $FUNCSIG$vifi (func (param i32 f32 i32))) + (type $FUNCSIG$viif (func (param i32 i32 f32))) + (type $FUNCSIG$fii (func (param i32 i32) (result f32))) + (type $FUNCSIG$viff (func (param i32 f32 f32))) (type $FUNCSIG$iid (func (param i32 f64) (result i32))) (type $FUNCSIG$iidi (func (param i32 f64 i32) (result i32))) (type $FUNCSIG$vidi (func (param i32 f64 i32))) + (type $FUNCSIG$viid (func (param i32 i32 f64))) + (type $FUNCSIG$dii (func (param i32 i32) (result f64))) + (type $FUNCSIG$vidd (func (param i32 f64 f64))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (import "rtrace" "onfree" (func $~lib/rt/rtrace/onfree (param i32))) (import "rtrace" "onalloc" (func $~lib/rt/rtrace/onalloc (param i32))) @@ -33,7 +42,8 @@ (data (i32.const 360) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00s\00t\00d\00/\00m\00a\00p\00.\00t\00s") (data (i32.const 400) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00K\00e\00y\00 \00d\00o\00e\00s\00 \00n\00o\00t\00 \00e\00x\00i\00s\00t") (data (i32.const 456) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00~\00l\00i\00b\00/\00m\00a\00p\00.\00t\00s") - (data (i32.const 496) "\0d\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\98D\08\00\00\00\00\00\98D\00\00\00\00\00\00\98\84\08\00\00\00\00\00\98\84\00\00\00\00\00\00\98\04\t\00\00\00\00\00\98\04\01\00\00\00\00\00\98\04\n\00\00\00\00\00\98\04\02\00\00\00\00\00\98\04\19\00\00\00\00\00\98\04\1a") + (data (i32.const 496) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") + (data (i32.const 544) " \00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\98D\08\00\00\00\00\003\04\00\00\02\00\00\00\93\04\00\00\02\00\00\008D\08\00\00\00\00\00\98\04\t\00\00\00\00\00\98D\00\00\00\00\00\003\00\00\00\02\00\00\008@\00\00\00\00\00\00\98\84\08\00\00\00\00\00S\04\00\00\02\00\00\00X\84\08\00\00\00\00\00\98\84\00\00\00\00\00\00S\00\00\00\02\00\00\00X\80\00\00\00\00\00\00\98\04\01\00\00\00\00\00\93\00\00\00\02\00\00\00\98\00\01\00\00\00\00\00\98\04\n\00\00\00\00\00\13\05\00\00\02\00\00\00\18\05\n\00\00\00\00\00\98\04\02\00\00\00\00\00\13\01\00\00\02\00\00\00\18\01\02\00\00\00\00\00\98\04\19\00\00\00\00\00\93\0c\00\00\02\00\00\00\98\0c\19\00\00\00\00\00\98\04\1a\00\00\00\00\00\13\0d\00\00\02\00\00\00\18\0d\1a") (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) (global $~lib/rt/pure/ROOTS (mut i32) (i32.const 0)) @@ -626,10 +636,10 @@ if unreachable end - i32.const 608 + i32.const 816 i32.const 0 i32.store - i32.const 2176 + i32.const 2384 i32.const 0 i32.store i32.const 0 @@ -643,7 +653,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 608 + i32.const 816 i32.add i32.const 0 i32.store offset=4 @@ -662,7 +672,7 @@ i32.add i32.const 2 i32.shl - i32.const 608 + i32.const 816 i32.add i32.const 0 i32.store offset=96 @@ -680,13 +690,13 @@ br $loop|0 end end - i32.const 608 - i32.const 2192 + i32.const 816 + i32.const 2400 memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - i32.const 608 + i32.const 816 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/tlsf/prepareSize (; 9 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) @@ -1378,7 +1388,7 @@ ) (func $~lib/rt/pure/__retain (; 22 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - i32.const 604 + i32.const 804 i32.gt_u if local.get $0 @@ -1621,7 +1631,7 @@ ) (func $~lib/rt/__typeinfo (; 25 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - i32.const 496 + i32.const 544 i32.load i32.gt_u if @@ -1635,7 +1645,7 @@ local.get $0 i32.const 3 i32.shl - i32.const 500 + i32.const 548 i32.add i32.load ) @@ -2007,7 +2017,7 @@ ) (func $~lib/rt/pure/__release (; 31 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 - i32.const 604 + i32.const 804 i32.gt_u if local.get $0 @@ -2391,1162 +2401,964 @@ local.get $0 i32.load offset=4 ) - (func $~lib/map/Map#delete (; 40 ;) (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 + (func $~lib/arraybuffer/ArrayBufferView#constructor (; 40 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) local.get $1 + i32.const 1073741808 + local.get $2 + i32.shr_u + i32.gt_u + if + i32.const 176 + i32.const 224 + i32.const 23 + i32.const 56 + call $~lib/builtins/abort + unreachable + end local.get $1 - i32.const 24 + local.get $2 i32.shl - i32.const 24 - i32.shr_s - call $~lib/util/hash/hash8 - call $~lib/map/Map#find - local.tee $1 + local.tee $3 + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.tee $2 + local.get $3 + call $~lib/memory/memory.fill + local.get $0 i32.eqz if - return + i32.const 12 + i32.const 2 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.set $0 end - local.get $1 - local.get $1 - i32.load offset=8 - i32.const 1 - i32.or + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 i32.store offset=8 + local.get $2 + local.set $1 local.get $0 + i32.load + local.tee $4 + local.get $2 + i32.ne + if + local.get $1 + call $~lib/rt/pure/__retain + local.set $1 + local.get $4 + call $~lib/rt/pure/__release + end local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 + local.get $1 + i32.store local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.tee $2 - i32.const 1 - i32.add - i32.const 4 + local.get $2 + i32.store offset=4 local.get $0 - i32.load offset=20 - local.tee $1 - i32.const 4 + local.get $3 + i32.store offset=8 + local.get $0 + ) + (func $~lib/rt/tlsf/reallocateBlock (; 41 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $2 + call $~lib/rt/tlsf/prepareSize + local.set $3 local.get $1 - i32.gt_u - select - i32.ge_u + i32.load + local.tee $4 + i32.const 1 + i32.and if (result i32) - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s + i32.const 0 else + local.get $1 + i32.load offset=4 + i32.const -268435456 + i32.and + i32.eqz + end + i32.eqz + if i32.const 0 + i32.const 24 + i32.const 521 + i32.const 4 + call $~lib/builtins/abort + unreachable end + local.get $3 + local.get $4 + i32.const -4 + i32.and + i32.le_u if local.get $0 + local.get $1 + local.get $3 + call $~lib/rt/tlsf/prepareBlock + local.get $1 local.get $2 - call $~lib/map/Map#rehash + i32.store offset=12 + local.get $1 + return end - ) - (func $std/map/testNumeric (; 41 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 i32) - call $~lib/map/Map#constructor - local.set $1 - loop $loop|0 - local.get $0 - i32.const 100 - i32.lt_s + local.get $1 + i32.const 16 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $6 + i32.load + local.tee $5 + i32.const 1 + i32.and + if + local.get $4 + i32.const -4 + i32.and + i32.const 16 + i32.add + local.get $5 + i32.const -4 + i32.and + i32.add + local.tee $5 + local.get $3 + i32.ge_u if - local.get $1 local.get $0 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 376 - i32.const 6 - i32.const 4 - call $~lib/builtins/abort - unreachable - end + local.get $6 + call $~lib/rt/tlsf/removeBlock local.get $1 - local.get $0 - local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 10 - i32.add - call $~lib/map/Map#set + local.get $4 + i32.const 3 + i32.and + local.get $5 + i32.or + i32.store local.get $1 + local.get $2 + i32.store offset=12 local.get $0 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 8 - i32.const 4 - call $~lib/builtins/abort - unreachable - end local.get $1 - local.get $0 - call $~lib/map/Map#get - local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 10 - i32.add - i32.ne - if - i32.const 0 - i32.const 376 - i32.const 9 - i32.const 4 - call $~lib/builtins/abort - unreachable - else - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $loop|0 - end - unreachable + local.get $3 + call $~lib/rt/tlsf/prepareBlock + local.get $1 + return end end + local.get $0 + local.get $2 + call $~lib/rt/tlsf/allocateBlock + local.tee $3 local.get $1 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 376 - i32.const 11 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $0 - loop $loop|1 - local.get $0 - i32.const 100 - i32.lt_s - if - local.get $1 - local.get $0 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 15 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/map/Map#get - local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 10 - i32.add - i32.ne - if - i32.const 0 - i32.const 376 - i32.const 16 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 20 - i32.add - call $~lib/map/Map#set - local.get $1 - local.get $0 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 18 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/map/Map#get - local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 20 - i32.add - i32.ne - if - i32.const 0 - i32.const 376 - i32.const 19 - i32.const 4 - call $~lib/builtins/abort - unreachable - else - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $loop|1 - end - unreachable - end - end + i32.load offset=8 + i32.store offset=8 + local.get $3 + i32.const 16 + i32.add local.get $1 - i32.load offset=20 - i32.const 100 - i32.ne + i32.const 16 + i32.add + local.get $2 + call $~lib/memory/memory.copy + local.get $1 + local.get $4 + i32.const 1 + i32.or + i32.store + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + local.get $1 + call $~lib/rt/rtrace/onfree + local.get $3 + ) + (func $~lib/rt/tlsf/__realloc (; 42 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz if i32.const 0 - i32.const 376 - i32.const 21 - i32.const 2 + i32.const 24 + i32.const 585 + i32.const 13 call $~lib/builtins/abort unreachable end + local.get $0 + i32.const 15 + i32.and + i32.eqz i32.const 0 - local.set $0 - loop $loop|2 + local.get $0 + select + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 586 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 16 + i32.sub + local.get $1 + call $~lib/rt/tlsf/reallocateBlock + i32.const 16 + i32.add + ) + (func $~lib/array/ensureSize (; 43 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + local.get $0 + i32.load offset=8 + local.tee $3 + local.get $2 + i32.shr_u + i32.gt_u + if + local.get $1 + i32.const 1073741808 + local.get $2 + i32.shr_u + i32.gt_u + if + i32.const 176 + i32.const 512 + i32.const 14 + i32.const 47 + call $~lib/builtins/abort + unreachable + end local.get $0 - i32.const 50 - i32.lt_s + i32.load + local.tee $4 + local.get $1 + local.get $2 + i32.shl + local.tee $2 + call $~lib/rt/tlsf/__realloc + local.tee $1 + local.get $3 + i32.add + local.get $2 + local.get $3 + i32.sub + call $~lib/memory/memory.fill + local.get $1 + local.get $4 + i32.ne if - local.get $1 - local.get $0 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 25 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/map/Map#get local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 20 - i32.add - i32.ne - if - i32.const 0 - i32.const 376 - i32.const 26 - i32.const 4 - call $~lib/builtins/abort - unreachable - end local.get $1 + call $~lib/rt/pure/__retain + i32.store local.get $0 - call $~lib/map/Map#delete local.get $1 - local.get $0 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 376 - i32.const 28 - i32.const 4 - call $~lib/builtins/abort - unreachable - else - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $loop|2 - end - unreachable + i32.store offset=4 end + local.get $0 + local.get $2 + i32.store offset=8 end + ) + (func $~lib/array/Array#__set (; 44 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) local.get $1 - i32.load offset=20 - i32.const 50 - i32.ne + local.get $0 + i32.load offset=12 + i32.ge_u if + local.get $1 i32.const 0 - i32.const 376 - i32.const 30 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $0 - loop $loop|3 - local.get $0 - i32.const 50 i32.lt_s if - local.get $1 - local.get $0 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 376 - i32.const 34 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 10 - i32.add - call $~lib/map/Map#set - local.get $1 - local.get $0 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 36 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/map/Map#delete - local.get $1 - local.get $0 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 376 - i32.const 38 - i32.const 4 - call $~lib/builtins/abort - unreachable - else - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $loop|3 - end + i32.const 280 + i32.const 512 + i32.const 109 + i32.const 21 + call $~lib/builtins/abort unreachable end - end - local.get $1 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 376 - i32.const 40 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/map/Map#clear - local.get $1 - i32.load offset=20 - if + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $3 i32.const 0 - i32.const 376 - i32.const 44 - i32.const 2 - call $~lib/builtins/abort - unreachable + call $~lib/array/ensureSize + local.get $0 + local.get $3 + i32.store offset=12 end + local.get $0 + i32.load offset=4 local.get $1 - call $~lib/rt/pure/__release + i32.add + local.get $2 + i32.store8 ) - (func $~lib/map/Map#constructor (; 42 ;) (result i32) - (local $0 i32) - i32.const 24 - i32.const 4 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 + (func $~lib/array/Array#set:length (; 45 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 + i32.load offset=12 + drop local.get $0 + local.get $1 i32.const 0 - i32.store offset=20 - local.get $0 - call $~lib/map/Map#clear - local.get $0 - ) - (func $~lib/map/Map#has (; 43 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + call $~lib/array/ensureSize local.get $0 local.get $1 - local.get $1 - i32.const 255 - i32.and - call $~lib/util/hash/hash8 - call $~lib/map/Map#find - i32.const 0 - i32.ne + i32.store offset=12 ) - (func $~lib/map/Map#rehash (; 44 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#keys (; 46 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - local.get $1 - i32.const 1 - i32.add - local.tee $4 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - local.get $4 - i32.const 3 - i32.shl - i32.const 3 - i32.div_s - local.tee $6 - i32.const 12 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $4 local.get $0 i32.load offset=8 - local.tee $2 + local.set $4 local.get $0 i32.load offset=16 - i32.const 12 - i32.mul - i32.add - local.set $7 - local.get $4 - local.set $3 - loop $continue|0 + local.set $2 + i32.const 16 + i32.const 4 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.get $2 + i32.const 0 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $1 + i32.const 0 + i32.store offset=12 + local.get $1 + local.get $2 + i32.store offset=12 + i32.const 0 + local.set $0 + loop $loop|0 + local.get $3 local.get $2 - local.get $7 - i32.eq - i32.eqz + i32.lt_s if - local.get $2 + local.get $3 + i32.const 12 + i32.mul + local.get $4 + i32.add + local.tee $5 i32.load offset=8 i32.const 1 i32.and i32.eqz if - local.get $3 - local.get $2 - i32.load8_u - i32.store8 - local.get $3 - local.get $2 - i32.load offset=4 - i32.store offset=4 - local.get $3 - local.get $2 - i32.load8_u - call $~lib/util/hash/hash8 local.get $1 - i32.and - i32.const 2 - i32.shl + local.get $0 local.get $5 + i32.load8_s + call $~lib/array/Array#__set + local.get $0 + i32.const 1 i32.add - local.tee $8 - i32.load - i32.store offset=8 - local.get $8 - local.get $3 - i32.store - local.get $3 - i32.const 12 - i32.add - local.set $3 + local.set $0 end - local.get $2 - i32.const 12 + local.get $3 + i32.const 1 i32.add - local.set $2 - br $continue|0 + local.set $3 + br $loop|0 end end - local.get $5 - local.tee $2 + local.get $1 local.get $0 - i32.load - local.tee $3 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - call $~lib/rt/pure/__release - end + call $~lib/array/Array#set:length + local.get $1 + ) + (func $~lib/array/Array#constructor (; 47 ;) (param $0 i32) (result i32) + (local $1 i32) + i32.const 16 + i32.const 5 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain local.get $0 - local.get $2 - i32.store + i32.const 2 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $1 + i32.const 0 + i32.store offset=12 + local.get $1 local.get $0 + i32.store offset=12 local.get $1 - i32.store offset=4 - local.get $4 - local.tee $1 + ) + (func $~lib/array/Array#push (; 48 ;) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) local.get $0 - i32.load offset=8 + local.get $0 + i32.load offset=12 local.tee $2 - i32.ne - if - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $2 - call $~lib/rt/pure/__release - end + i32.const 1 + i32.add + local.tee $3 + i32.const 2 + call $~lib/array/ensureSize local.get $0 + i32.load offset=4 + local.get $2 + i32.const 2 + i32.shl + i32.add local.get $1 - i32.store offset=8 + i32.store local.get $0 - local.get $6 + local.get $3 i32.store offset=12 + ) + (func $~lib/array/Array#set:length (; 49 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) local.get $0 + i32.load offset=12 + drop local.get $0 - i32.load offset=20 - i32.store offset=16 - local.get $5 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release + local.get $1 + i32.const 2 + call $~lib/array/ensureSize + local.get $0 + local.get $1 + i32.store offset=12 ) - (func $~lib/map/Map#set (; 45 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/map/Map#values (; 50 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) local.get $0 - local.get $1 - local.get $1 - i32.const 255 - i32.and - call $~lib/util/hash/hash8 + i32.load offset=8 + local.set $3 + local.get $0 + i32.load offset=16 local.tee $4 - call $~lib/map/Map#find - local.tee $3 - if - local.get $3 - local.get $2 - i32.store offset=4 - else - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 + call $~lib/array/Array#constructor + local.set $2 + i32.const 0 + local.set $0 + loop $loop|0 + block $break|0 local.get $0 - i32.load offset=20 + local.get $4 + i32.ge_s + br_if $break|0 local.get $0 - i32.load offset=12 - i32.const 3 + i32.const 12 i32.mul - i32.const 4 - i32.div_s - i32.lt_s - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 + local.get $3 + i32.add + local.tee $5 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $2 + local.get $5 i32.load offset=4 + call $~lib/array/Array#push + local.get $1 i32.const 1 - i32.shl - i32.const 1 - i32.or + i32.add + local.set $1 end - call $~lib/map/Map#rehash + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $loop|0 end - local.get $0 - i32.load offset=8 - local.set $3 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $5 - i32.const 1 - i32.add - i32.store offset=16 - local.get $5 - i32.const 12 - i32.mul - local.get $3 - i32.add - local.tee $3 - local.get $1 - i32.store8 - local.get $3 - local.get $2 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $3 - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $4 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $0 - i32.load - i32.store offset=8 - local.get $0 - local.get $3 - i32.store end + local.get $2 + local.get $1 + call $~lib/array/Array#set:length + local.get $2 ) - (func $~lib/map/Map#get (; 46 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#clear (; 51 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + local.get $0 + i32.load + call $~lib/rt/pure/__release local.get $0 local.get $1 + i32.store + local.get $0 + i32.const 3 + i32.store offset=4 + i32.const 32 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + local.get $0 + i32.load offset=8 + call $~lib/rt/pure/__release + local.get $0 local.get $1 - i32.const 255 - i32.and - call $~lib/util/hash/hash8 - call $~lib/map/Map#find + i32.store offset=8 + local.get $0 + i32.const 4 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + ) + (func $~lib/map/Map#constructor (; 52 ;) (result i32) + (local $0 i32) + i32.const 24 + i32.const 6 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain local.tee $0 - i32.eqz + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + local.get $0 + call $~lib/map/Map#clear + local.get $0 + ) + (func $~lib/map/Map#constructor (; 53 ;) (result i32) + (local $0 i32) + i32.const 24 + i32.const 7 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.tee $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + local.get $0 + call $~lib/map/Map#clear + local.get $0 + ) + (func $~lib/array/Array#__get (; 54 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u if - i32.const 416 - i32.const 472 - i32.const 111 - i32.const 16 + i32.const 280 + i32.const 512 + i32.const 93 + i32.const 41 call $~lib/builtins/abort unreachable end local.get $0 i32.load offset=4 - ) - (func $~lib/map/Map#delete (; 47 ;) (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 local.get $1 + i32.add + i32.load8_s + ) + (func $~lib/array/Array#__get (; 55 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 - i32.const 255 - i32.and - call $~lib/util/hash/hash8 - call $~lib/map/Map#find - local.tee $1 - i32.eqz + local.get $0 + i32.load offset=12 + i32.ge_u if - return + i32.const 280 + i32.const 512 + i32.const 93 + i32.const 41 + call $~lib/builtins/abort + unreachable end - local.get $1 - local.get $1 - i32.load offset=8 - i32.const 1 - i32.or - i32.store offset=8 local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + ) + (func $~lib/map/Map#find (; 56 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 + i32.load local.get $0 i32.load offset=4 - i32.const 1 - i32.shr_u - local.tee $2 - i32.const 1 + local.get $2 + i32.and + i32.const 2 + i32.shl i32.add - i32.const 4 - local.get $0 - i32.load offset=20 - local.tee $1 - i32.const 4 - local.get $1 - i32.gt_u - select - i32.ge_u - if (result i32) - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - else - i32.const 0 - end - if - local.get $0 - local.get $2 - call $~lib/map/Map#rehash - end - ) - (func $std/map/testNumeric (; 48 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 i32) - call $~lib/map/Map#constructor - local.set $1 - loop $loop|0 + i32.load + local.set $0 + loop $continue|0 local.get $0 - i32.const 100 - i32.lt_u if - local.get $1 - local.get $0 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 376 - i32.const 6 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 local.get $0 - local.get $0 - i32.const 255 + i32.load offset=4 + i32.const 1 i32.and - i32.const 10 - i32.add - call $~lib/map/Map#set - local.get $1 - local.get $0 - call $~lib/map/Map#has - i32.eqz - if + if (result i32) i32.const 0 - i32.const 376 - i32.const 8 - i32.const 4 - call $~lib/builtins/abort - unreachable + else + local.get $0 + i32.load8_u + local.get $1 + i32.const 255 + i32.and + i32.eq end - local.get $1 - local.get $0 - call $~lib/map/Map#get - local.get $0 - i32.const 255 - i32.and - i32.const 10 - i32.add - i32.ne if - i32.const 0 - i32.const 376 - i32.const 9 - i32.const 4 - call $~lib/builtins/abort - unreachable + local.get $0 + return else local.get $0 - i32.const 1 - i32.add + i32.load offset=4 + i32.const -2 + i32.and local.set $0 - br $loop|0 + br $continue|0 end unreachable end end - local.get $1 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 376 - i32.const 11 - i32.const 2 - call $~lib/builtins/abort - unreachable - end i32.const 0 - local.set $0 - loop $loop|1 - local.get $0 - i32.const 100 - i32.lt_u + ) + (func $~lib/map/Map#rehash (; 57 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $1 + i32.const 1 + i32.add + local.tee $4 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $5 + local.get $4 + i32.const 3 + i32.shl + i32.const 3 + i32.div_s + local.tee $6 + i32.const 3 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $4 + local.get $0 + i32.load offset=8 + local.tee $2 + local.get $0 + i32.load offset=16 + i32.const 3 + i32.shl + i32.add + local.set $7 + local.get $4 + local.set $3 + loop $continue|0 + local.get $2 + local.get $7 + i32.eq + i32.eqz if - local.get $1 - local.get $0 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 15 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/map/Map#get - local.get $0 - i32.const 255 - i32.and - i32.const 10 - i32.add - i32.ne - if - i32.const 0 - i32.const 376 - i32.const 16 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - local.get $0 - i32.const 255 + local.get $2 + i32.load offset=4 + i32.const 1 i32.and - i32.const 20 - i32.add - call $~lib/map/Map#set - local.get $1 - local.get $0 - call $~lib/map/Map#has i32.eqz if - i32.const 0 - i32.const 376 - i32.const 18 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/map/Map#get - local.get $0 - i32.const 255 - i32.and - i32.const 20 - i32.add - i32.ne - if - i32.const 0 - i32.const 376 - i32.const 19 - i32.const 4 - call $~lib/builtins/abort - unreachable - else - local.get $0 - i32.const 1 + local.get $3 + local.get $2 + i32.load8_s + i32.store8 + local.get $3 + local.get $2 + i32.load8_s offset=1 + i32.store8 offset=1 + local.get $3 + local.get $2 + i32.load8_s + call $~lib/util/hash/hash8 + local.get $1 + i32.and + i32.const 2 + i32.shl + local.get $5 i32.add - local.set $0 - br $loop|1 + local.tee $8 + i32.load + i32.store offset=4 + local.get $8 + local.get $3 + i32.store + local.get $3 + i32.const 8 + i32.add + local.set $3 end - unreachable - end - end - local.get $1 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 376 - i32.const 21 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $0 - loop $loop|2 - local.get $0 - i32.const 50 - i32.lt_u - if - local.get $1 - local.get $0 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 25 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/map/Map#get - local.get $0 - i32.const 255 - i32.and - i32.const 20 + local.get $2 + i32.const 8 i32.add - i32.ne - if - i32.const 0 - i32.const 376 - i32.const 26 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/map/Map#delete - local.get $1 - local.get $0 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 376 - i32.const 28 - i32.const 4 - call $~lib/builtins/abort - unreachable - else - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $loop|2 - end - unreachable + local.set $2 + br $continue|0 end end - local.get $1 - i32.load offset=20 - i32.const 50 + local.get $5 + local.tee $2 + local.get $0 + i32.load + local.tee $3 i32.ne if - i32.const 0 - i32.const 376 - i32.const 30 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $0 - loop $loop|3 - local.get $0 - i32.const 50 - i32.lt_u - if - local.get $1 - local.get $0 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 376 - i32.const 34 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - local.get $0 - i32.const 255 - i32.and - i32.const 10 - i32.add - call $~lib/map/Map#set - local.get $1 - local.get $0 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 36 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/map/Map#delete - local.get $1 - local.get $0 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 376 - i32.const 38 - i32.const 4 - call $~lib/builtins/abort - unreachable - else - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $loop|3 - end - unreachable - end + local.get $2 + call $~lib/rt/pure/__retain + local.set $2 + local.get $3 + call $~lib/rt/pure/__release end + local.get $0 + local.get $2 + i32.store + local.get $0 local.get $1 - i32.load offset=20 - i32.const 50 + i32.store offset=4 + local.get $4 + local.tee $1 + local.get $0 + i32.load offset=8 + local.tee $2 i32.ne if - i32.const 0 - i32.const 376 - i32.const 40 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/map/Map#clear - local.get $1 - i32.load offset=20 - if - i32.const 0 - i32.const 376 - i32.const 44 - i32.const 2 - call $~lib/builtins/abort - unreachable + local.get $1 + call $~lib/rt/pure/__retain + local.set $1 + local.get $2 + call $~lib/rt/pure/__release end - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/map/Map#constructor (; 49 ;) (result i32) - (local $0 i32) - i32.const 24 - i32.const 5 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.store local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 + local.get $1 i32.store offset=8 local.get $0 - i32.const 0 + local.get $6 i32.store offset=12 local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - call $~lib/map/Map#clear - local.get $0 - ) - (func $~lib/util/hash/hash16 (; 50 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.const 255 - i32.and - i32.const -2128831035 - i32.xor - i32.const 16777619 - i32.mul local.get $0 - i32.const 8 - i32.shr_u - i32.xor - i32.const 16777619 - i32.mul + i32.load offset=20 + i32.store offset=16 + local.get $5 + call $~lib/rt/pure/__release + local.get $4 + call $~lib/rt/pure/__release ) - (func $~lib/map/Map#find (; 51 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.load + (func $~lib/map/Map#set (; 58 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) local.get $0 - i32.load offset=4 - local.get $2 - i32.and - i32.const 2 + local.get $1 + local.get $1 + i32.const 24 i32.shl - i32.add - i32.load - local.set $0 - loop $continue|0 + i32.const 24 + i32.shr_s + call $~lib/util/hash/hash8 + local.tee $4 + call $~lib/map/Map#find + local.tee $3 + if + local.get $3 + local.get $2 + i32.store8 offset=1 + else + local.get $0 + i32.load offset=16 local.get $0 + i32.load offset=12 + i32.eq if local.get $0 - i32.load offset=8 - i32.const 1 - i32.and - if (result i32) - i32.const 0 + local.get $0 + i32.load offset=20 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + local.get $0 + i32.load offset=4 else local.get $0 - i32.load16_u + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/map/Map#rehash + end + local.get $0 + i32.load offset=8 + local.set $3 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $5 + i32.const 1 + i32.add + i32.store offset=16 + local.get $5 + i32.const 3 + i32.shl + local.get $3 + i32.add + local.tee $3 + local.get $1 + i32.store8 + local.get $3 + local.get $2 + i32.store8 offset=1 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + local.get $3 + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $4 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $0 + i32.load + i32.store offset=4 + local.get $0 + local.get $3 + i32.store + end + ) + (func $~lib/util/hash/hash32 (; 59 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.const 255 + i32.and + i32.const -2128831035 + i32.xor + i32.const 16777619 + i32.mul + local.get $0 + i32.const 8 + i32.shr_u + i32.const 255 + i32.and + i32.xor + i32.const 16777619 + i32.mul + local.get $0 + i32.const 16 + i32.shr_u + i32.const 255 + i32.and + i32.xor + i32.const 16777619 + i32.mul + local.get $0 + i32.const 24 + i32.shr_u + i32.xor + i32.const 16777619 + i32.mul + ) + (func $~lib/map/Map#find (; 60 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $2 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + loop $continue|0 + local.get $0 + if + local.get $0 + i32.load offset=8 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $0 + i32.load local.get $1 - i32.const 65535 - i32.and i32.eq end if @@ -3565,20 +3377,7 @@ end i32.const 0 ) - (func $~lib/map/Map#has (; 52 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - call $~lib/util/hash/hash16 - call $~lib/map/Map#find - i32.const 0 - i32.ne - ) - (func $~lib/map/Map#rehash (; 53 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 61 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3629,16 +3428,16 @@ if local.get $3 local.get $2 - i32.load16_s - i32.store16 + i32.load + i32.store local.get $3 local.get $2 i32.load offset=4 i32.store offset=4 local.get $3 local.get $2 - i32.load16_s - call $~lib/util/hash/hash16 + i32.load + call $~lib/util/hash/hash32 local.get $1 i32.and i32.const 2 @@ -3710,20 +3509,16 @@ local.get $4 call $~lib/rt/pure/__release ) - (func $~lib/map/Map#set (; 54 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/map/Map#set (; 62 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) local.get $0 local.get $1 local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - call $~lib/util/hash/hash16 + call $~lib/util/hash/hash32 local.tee $4 - call $~lib/map/Map#find + call $~lib/map/Map#find local.tee $3 if local.get $3 @@ -3757,7 +3552,7 @@ i32.const 1 i32.or end - call $~lib/map/Map#rehash + call $~lib/map/Map#rehash end local.get $0 i32.load offset=8 @@ -3776,7 +3571,7 @@ i32.add local.tee $3 local.get $1 - i32.store16 + i32.store local.get $3 local.get $2 i32.store offset=4 @@ -3804,40 +3599,17 @@ i32.store end ) - (func $~lib/map/Map#get (; 55 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - call $~lib/util/hash/hash16 - call $~lib/map/Map#find - local.tee $0 - i32.eqz - if - i32.const 416 - i32.const 472 - i32.const 111 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - ) - (func $~lib/map/Map#delete (; 56 ;) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#delete (; 63 ;) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 local.get $1 local.get $1 - i32.const 16 + i32.const 24 i32.shl - i32.const 16 + i32.const 24 i32.shr_s - call $~lib/util/hash/hash16 - call $~lib/map/Map#find + call $~lib/util/hash/hash8 + call $~lib/map/Map#find local.tee $1 i32.eqz if @@ -3887,13 +3659,19 @@ if local.get $0 local.get $2 - call $~lib/map/Map#rehash + call $~lib/map/Map#rehash end ) - (func $std/map/testNumeric (; 57 ;) (type $FUNCSIG$v) + (func $std/map/testNumeric (; 64 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) - call $~lib/map/Map#constructor + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + call $~lib/map/Map#constructor local.set $1 loop $loop|0 local.get $0 @@ -3902,7 +3680,7 @@ if local.get $1 local.get $0 - call $~lib/map/Map#has + call $~lib/map/Map#has if i32.const 0 i32.const 376 @@ -3914,16 +3692,16 @@ local.get $1 local.get $0 local.get $0 - i32.const 16 + i32.const 24 i32.shl - i32.const 16 + i32.const 24 i32.shr_s i32.const 10 i32.add - call $~lib/map/Map#set + call $~lib/map/Map#set local.get $1 local.get $0 - call $~lib/map/Map#has + call $~lib/map/Map#has i32.eqz if i32.const 0 @@ -3935,11 +3713,11 @@ end local.get $1 local.get $0 - call $~lib/map/Map#get + call $~lib/map/Map#get local.get $0 - i32.const 16 + i32.const 24 i32.shl - i32.const 16 + i32.const 24 i32.shr_s i32.const 10 i32.add @@ -3982,7 +3760,7 @@ if local.get $1 local.get $0 - call $~lib/map/Map#has + call $~lib/map/Map#has i32.eqz if i32.const 0 @@ -3994,11 +3772,11 @@ end local.get $1 local.get $0 - call $~lib/map/Map#get + call $~lib/map/Map#get local.get $0 - i32.const 16 + i32.const 24 i32.shl - i32.const 16 + i32.const 24 i32.shr_s i32.const 10 i32.add @@ -4014,16 +3792,16 @@ local.get $1 local.get $0 local.get $0 - i32.const 16 + i32.const 24 i32.shl - i32.const 16 + i32.const 24 i32.shr_s i32.const 20 i32.add - call $~lib/map/Map#set + call $~lib/map/Map#set local.get $1 local.get $0 - call $~lib/map/Map#has + call $~lib/map/Map#has i32.eqz if i32.const 0 @@ -4035,11 +3813,11 @@ end local.get $1 local.get $0 - call $~lib/map/Map#get + call $~lib/map/Map#get local.get $0 - i32.const 16 + i32.const 24 i32.shl - i32.const 16 + i32.const 24 i32.shr_s i32.const 20 i32.add @@ -4073,54 +3851,149 @@ call $~lib/builtins/abort unreachable end + local.get $1 + call $~lib/map/Map#keys + local.set $3 + local.get $1 + call $~lib/map/Map#values + local.set $6 + call $~lib/map/Map#constructor + local.set $4 + call $~lib/map/Map#constructor + local.set $5 i32.const 0 local.set $0 loop $loop|2 local.get $0 - i32.const 50 + local.get $3 + i32.load offset=12 i32.lt_s if - local.get $1 + local.get $3 local.get $0 - call $~lib/map/Map#has + call $~lib/array/Array#__get + local.set $2 + local.get $6 + local.get $0 + call $~lib/array/Array#__get + local.set $7 + local.get $1 + local.get $2 + call $~lib/map/Map#has i32.eqz if i32.const 0 i32.const 376 - i32.const 25 + i32.const 31 i32.const 4 call $~lib/builtins/abort unreachable end local.get $1 - local.get $0 - call $~lib/map/Map#get - local.get $0 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + local.get $7 i32.const 20 - i32.add + i32.sub + call $~lib/map/Map#has + if + local.get $4 + local.get $2 + local.get $2 + call $~lib/map/Map#set + local.get $5 + local.get $7 + i32.const 20 + i32.sub + local.tee $2 + local.get $2 + call $~lib/map/Map#set + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $loop|2 + else + i32.const 0 + i32.const 376 + i32.const 32 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + unreachable + end + end + local.get $4 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 36 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $5 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 37 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $loop|3 + local.get $0 + i32.const 50 + i32.lt_s + if + local.get $1 + local.get $0 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 41 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/map/Map#get + local.get $0 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.const 20 + i32.add i32.ne if i32.const 0 i32.const 376 - i32.const 26 + i32.const 42 i32.const 4 call $~lib/builtins/abort unreachable end local.get $1 local.get $0 - call $~lib/map/Map#delete + call $~lib/map/Map#delete local.get $1 local.get $0 - call $~lib/map/Map#has + call $~lib/map/Map#has if i32.const 0 i32.const 376 - i32.const 28 + i32.const 44 i32.const 4 call $~lib/builtins/abort unreachable @@ -4129,7 +4002,7 @@ i32.const 1 i32.add local.set $0 - br $loop|2 + br $loop|3 end unreachable end @@ -4141,25 +4014,25 @@ if i32.const 0 i32.const 376 - i32.const 30 + i32.const 46 i32.const 2 call $~lib/builtins/abort unreachable end i32.const 0 local.set $0 - loop $loop|3 + loop $loop|4 local.get $0 i32.const 50 i32.lt_s if local.get $1 local.get $0 - call $~lib/map/Map#has + call $~lib/map/Map#has if i32.const 0 i32.const 376 - i32.const 34 + i32.const 50 i32.const 4 call $~lib/builtins/abort unreachable @@ -4167,35 +4040,35 @@ local.get $1 local.get $0 local.get $0 - i32.const 16 + i32.const 24 i32.shl - i32.const 16 + i32.const 24 i32.shr_s i32.const 10 i32.add - call $~lib/map/Map#set + call $~lib/map/Map#set local.get $1 local.get $0 - call $~lib/map/Map#has + call $~lib/map/Map#has i32.eqz if i32.const 0 i32.const 376 - i32.const 36 + i32.const 52 i32.const 4 call $~lib/builtins/abort unreachable end local.get $1 local.get $0 - call $~lib/map/Map#delete + call $~lib/map/Map#delete local.get $1 local.get $0 - call $~lib/map/Map#has + call $~lib/map/Map#has if i32.const 0 i32.const 376 - i32.const 38 + i32.const 54 i32.const 4 call $~lib/builtins/abort unreachable @@ -4204,7 +4077,7 @@ i32.const 1 i32.add local.set $0 - br $loop|3 + br $loop|4 end unreachable end @@ -4216,7 +4089,7 @@ if i32.const 0 i32.const 376 - i32.const 40 + i32.const 56 i32.const 2 call $~lib/builtins/abort unreachable @@ -4228,18 +4101,26 @@ if i32.const 0 i32.const 376 - i32.const 44 + i32.const 60 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $3 + call $~lib/rt/pure/__release + local.get $6 + call $~lib/rt/pure/__release + local.get $4 + call $~lib/rt/pure/__release + local.get $5 + call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release ) - (func $~lib/map/Map#constructor (; 58 ;) (result i32) + (func $~lib/map/Map#constructor (; 65 ;) (result i32) (local $0 i32) i32.const 24 - i32.const 6 + i32.const 8 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain local.tee $0 @@ -4264,18 +4145,18 @@ call $~lib/map/Map#clear local.get $0 ) - (func $~lib/map/Map#has (; 59 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#has (; 66 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 local.get $1 - i32.const 65535 + i32.const 255 i32.and - call $~lib/util/hash/hash16 - call $~lib/map/Map#find + call $~lib/util/hash/hash8 + call $~lib/map/Map#find i32.const 0 i32.ne ) - (func $~lib/map/Map#rehash (; 60 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 67 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -4326,16 +4207,16 @@ if local.get $3 local.get $2 - i32.load16_u - i32.store16 + i32.load8_u + i32.store8 local.get $3 local.get $2 i32.load offset=4 i32.store offset=4 local.get $3 local.get $2 - i32.load16_u - call $~lib/util/hash/hash16 + i32.load8_u + call $~lib/util/hash/hash8 local.get $1 i32.and i32.const 2 @@ -4407,18 +4288,18 @@ local.get $4 call $~lib/rt/pure/__release ) - (func $~lib/map/Map#set (; 61 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/map/Map#set (; 68 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) local.get $0 local.get $1 local.get $1 - i32.const 65535 + i32.const 255 i32.and - call $~lib/util/hash/hash16 + call $~lib/util/hash/hash8 local.tee $4 - call $~lib/map/Map#find + call $~lib/map/Map#find local.tee $3 if local.get $3 @@ -4452,7 +4333,7 @@ i32.const 1 i32.or end - call $~lib/map/Map#rehash + call $~lib/map/Map#rehash end local.get $0 i32.load offset=8 @@ -4471,7 +4352,7 @@ i32.add local.tee $3 local.get $1 - i32.store16 + i32.store8 local.get $3 local.get $2 i32.store offset=4 @@ -4499,14 +4380,14 @@ i32.store end ) - (func $~lib/map/Map#get (; 62 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#get (; 69 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 local.get $1 - i32.const 65535 + i32.const 255 i32.and - call $~lib/util/hash/hash16 - call $~lib/map/Map#find + call $~lib/util/hash/hash8 + call $~lib/map/Map#find local.tee $0 i32.eqz if @@ -4520,215 +4401,463 @@ local.get $0 i32.load offset=4 ) - (func $~lib/map/Map#delete (; 63 ;) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#keys (; 70 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) local.get $0 - local.get $1 - local.get $1 - i32.const 65535 - i32.and - call $~lib/util/hash/hash16 - call $~lib/map/Map#find + i32.load offset=8 + local.set $4 + local.get $0 + i32.load offset=16 + local.set $2 + i32.const 16 + i32.const 9 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.get $2 + i32.const 0 + call $~lib/arraybuffer/ArrayBufferView#constructor local.tee $1 - i32.eqz - if - return + i32.const 0 + i32.store offset=12 + local.get $1 + local.get $2 + i32.store offset=12 + i32.const 0 + local.set $0 + loop $loop|0 + local.get $3 + local.get $2 + i32.lt_s + if + local.get $3 + i32.const 12 + i32.mul + local.get $4 + i32.add + local.tee $5 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $1 + local.get $0 + local.get $5 + i32.load8_u + call $~lib/array/Array#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $loop|0 + end end local.get $1 + local.get $0 + call $~lib/array/Array#set:length local.get $1 - i32.load offset=8 - i32.const 1 - i32.or + ) + (func $~lib/map/Map#constructor (; 71 ;) (result i32) + (local $0 i32) + i32.const 24 + i32.const 10 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.tee $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 i32.store offset=8 local.get $0 + i32.const 0 + i32.store offset=12 local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 i32.store offset=20 local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.tee $2 - i32.const 1 - i32.add - i32.const 4 + call $~lib/map/Map#clear local.get $0 - i32.load offset=20 - local.tee $1 - i32.const 4 + ) + (func $~lib/array/Array#__get (; 72 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 - i32.gt_u - select + local.get $0 + i32.load offset=12 i32.ge_u - if (result i32) - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - else - i32.const 0 - end if - local.get $0 - local.get $2 - call $~lib/map/Map#rehash + i32.const 280 + i32.const 512 + i32.const 93 + i32.const 41 + call $~lib/builtins/abort + unreachable end + local.get $0 + i32.load offset=4 + local.get $1 + i32.add + i32.load8_u ) - (func $std/map/testNumeric (; 64 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 i32) - call $~lib/map/Map#constructor - local.set $1 - loop $loop|0 - local.get $0 - i32.const 100 - i32.lt_u + (func $~lib/map/Map#rehash (; 73 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $1 + i32.const 1 + i32.add + local.tee $4 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $5 + local.get $4 + i32.const 3 + i32.shl + i32.const 3 + i32.div_s + local.tee $6 + i32.const 3 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $4 + local.get $0 + i32.load offset=8 + local.tee $2 + local.get $0 + i32.load offset=16 + i32.const 3 + i32.shl + i32.add + local.set $7 + local.get $4 + local.set $3 + loop $continue|0 + local.get $2 + local.get $7 + i32.eq + i32.eqz if - local.get $1 - local.get $0 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 376 - i32.const 6 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - local.get $0 - i32.const 65535 + local.get $2 + i32.load offset=4 + i32.const 1 i32.and - i32.const 10 - i32.add - call $~lib/map/Map#set - local.get $1 - local.get $0 - call $~lib/map/Map#has i32.eqz if - i32.const 0 - i32.const 376 + local.get $3 + local.get $2 + i32.load8_u + i32.store8 + local.get $3 + local.get $2 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $3 + local.get $2 + i32.load8_u + call $~lib/util/hash/hash8 + local.get $1 + i32.and + i32.const 2 + i32.shl + local.get $5 + i32.add + local.tee $8 + i32.load + i32.store offset=4 + local.get $8 + local.get $3 + i32.store + local.get $3 i32.const 8 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/map/Map#get - local.get $0 - i32.const 65535 - i32.and - i32.const 10 - i32.add - i32.ne - if - i32.const 0 - i32.const 376 - i32.const 9 - i32.const 4 - call $~lib/builtins/abort - unreachable - else - local.get $0 - i32.const 1 i32.add - local.set $0 - br $loop|0 + local.set $3 end - unreachable + local.get $2 + i32.const 8 + i32.add + local.set $2 + br $continue|0 end end + local.get $5 + local.tee $2 + local.get $0 + i32.load + local.tee $3 + i32.ne + if + local.get $2 + call $~lib/rt/pure/__retain + local.set $2 + local.get $3 + call $~lib/rt/pure/__release + end + local.get $0 + local.get $2 + i32.store + local.get $0 local.get $1 - i32.load offset=20 - i32.const 100 + i32.store offset=4 + local.get $4 + local.tee $1 + local.get $0 + i32.load offset=8 + local.tee $2 i32.ne if - i32.const 0 - i32.const 376 - i32.const 11 - i32.const 2 - call $~lib/builtins/abort - unreachable + local.get $1 + call $~lib/rt/pure/__retain + local.set $1 + local.get $2 + call $~lib/rt/pure/__release end - i32.const 0 - local.set $0 - loop $loop|1 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $0 + local.get $6 + i32.store offset=12 + local.get $0 + local.get $0 + i32.load offset=20 + i32.store offset=16 + local.get $5 + call $~lib/rt/pure/__release + local.get $4 + call $~lib/rt/pure/__release + ) + (func $~lib/map/Map#set (; 74 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + local.get $1 + local.get $1 + i32.const 255 + i32.and + call $~lib/util/hash/hash8 + local.tee $4 + call $~lib/map/Map#find + local.tee $3 + if + local.get $3 + local.get $2 + i32.store8 offset=1 + else local.get $0 - i32.const 100 - i32.lt_u + i32.load offset=16 + local.get $0 + i32.load offset=12 + i32.eq if - local.get $1 local.get $0 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 15 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 local.get $0 - call $~lib/map/Map#get + i32.load offset=20 local.get $0 - i32.const 65535 - i32.and - i32.const 10 - i32.add - i32.ne - if - i32.const 0 - i32.const 376 - i32.const 16 - i32.const 4 - call $~lib/builtins/abort - unreachable + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + local.get $0 + i32.load offset=4 + else + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or end - local.get $1 - local.get $0 - local.get $0 - i32.const 65535 + call $~lib/map/Map#rehash + end + local.get $0 + i32.load offset=8 + local.set $3 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $5 + i32.const 1 + i32.add + i32.store offset=16 + local.get $5 + i32.const 3 + i32.shl + local.get $3 + i32.add + local.tee $3 + local.get $1 + i32.store8 + local.get $3 + local.get $2 + i32.store8 offset=1 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + local.get $3 + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $4 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $0 + i32.load + i32.store offset=4 + local.get $0 + local.get $3 + i32.store + end + ) + (func $~lib/map/Map#delete (; 75 ;) (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + local.get $1 + i32.const 255 + i32.and + call $~lib/util/hash/hash8 + call $~lib/map/Map#find + local.tee $1 + i32.eqz + if + return + end + local.get $1 + local.get $1 + i32.load offset=8 + i32.const 1 + i32.or + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.sub + i32.store offset=20 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.tee $2 + i32.const 1 + i32.add + i32.const 4 + local.get $0 + i32.load offset=20 + local.tee $1 + i32.const 4 + local.get $1 + i32.gt_u + select + i32.ge_u + if (result i32) + local.get $0 + i32.load offset=20 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + else + i32.const 0 + end + if + local.get $0 + local.get $2 + call $~lib/map/Map#rehash + end + ) + (func $std/map/testNumeric (; 76 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + call $~lib/map/Map#constructor + local.set $1 + loop $loop|0 + local.get $0 + i32.const 100 + i32.lt_u + if + local.get $1 + local.get $0 + call $~lib/map/Map#has + if + i32.const 0 + i32.const 376 + i32.const 6 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + local.get $0 + i32.const 255 i32.and - i32.const 20 + i32.const 10 i32.add - call $~lib/map/Map#set + call $~lib/map/Map#set local.get $1 local.get $0 - call $~lib/map/Map#has + call $~lib/map/Map#has i32.eqz if i32.const 0 i32.const 376 - i32.const 18 + i32.const 8 i32.const 4 call $~lib/builtins/abort unreachable end local.get $1 local.get $0 - call $~lib/map/Map#get + call $~lib/map/Map#get local.get $0 - i32.const 65535 + i32.const 255 i32.and - i32.const 20 + i32.const 10 i32.add i32.ne if i32.const 0 i32.const 376 - i32.const 19 + i32.const 9 i32.const 4 call $~lib/builtins/abort unreachable @@ -4737,7 +4866,7 @@ i32.const 1 i32.add local.set $0 - br $loop|1 + br $loop|0 end unreachable end @@ -4749,57 +4878,80 @@ if i32.const 0 i32.const 376 - i32.const 21 + i32.const 11 i32.const 2 call $~lib/builtins/abort unreachable end i32.const 0 local.set $0 - loop $loop|2 + loop $loop|1 local.get $0 - i32.const 50 + i32.const 100 i32.lt_u if local.get $1 local.get $0 - call $~lib/map/Map#has + call $~lib/map/Map#has i32.eqz if i32.const 0 i32.const 376 - i32.const 25 + i32.const 15 i32.const 4 call $~lib/builtins/abort unreachable end local.get $1 local.get $0 - call $~lib/map/Map#get + call $~lib/map/Map#get local.get $0 - i32.const 65535 + i32.const 255 i32.and - i32.const 20 + i32.const 10 i32.add i32.ne if i32.const 0 i32.const 376 - i32.const 26 + i32.const 16 i32.const 4 call $~lib/builtins/abort unreachable end local.get $1 local.get $0 - call $~lib/map/Map#delete + local.get $0 + i32.const 255 + i32.and + i32.const 20 + i32.add + call $~lib/map/Map#set local.get $1 local.get $0 - call $~lib/map/Map#has + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 18 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/map/Map#get + local.get $0 + i32.const 255 + i32.and + i32.const 20 + i32.add + i32.ne if i32.const 0 i32.const 376 - i32.const 28 + i32.const 19 i32.const 4 call $~lib/builtins/abort unreachable @@ -4808,71 +4960,164 @@ i32.const 1 i32.add local.set $0 - br $loop|2 + br $loop|1 end unreachable end end local.get $1 i32.load offset=20 - i32.const 50 + i32.const 100 i32.ne if i32.const 0 i32.const 376 - i32.const 30 + i32.const 21 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $1 + call $~lib/map/Map#keys + local.set $3 + local.get $1 + call $~lib/map/Map#values + local.set $6 + call $~lib/map/Map#constructor + local.set $4 + call $~lib/map/Map#constructor + local.set $5 i32.const 0 local.set $0 - loop $loop|3 + loop $loop|2 local.get $0 - i32.const 50 - i32.lt_u + local.get $3 + i32.load offset=12 + i32.lt_s if - local.get $1 + local.get $3 local.get $0 - call $~lib/map/Map#has + call $~lib/array/Array#__get + local.set $2 + local.get $6 + local.get $0 + call $~lib/array/Array#__get + local.set $7 + local.get $1 + local.get $2 + call $~lib/map/Map#has + i32.eqz if i32.const 0 i32.const 376 - i32.const 34 + i32.const 31 i32.const 4 call $~lib/builtins/abort unreachable end local.get $1 - local.get $0 - local.get $0 - i32.const 65535 - i32.and - i32.const 10 - i32.add - call $~lib/map/Map#set - local.get $1 - local.get $0 - call $~lib/map/Map#has - i32.eqz + local.get $7 + i32.const 20 + i32.sub + call $~lib/map/Map#has if + local.get $4 + local.get $2 + local.get $2 + call $~lib/map/Map#set + local.get $5 + local.get $7 + i32.const 20 + i32.sub + local.tee $2 + local.get $2 + call $~lib/map/Map#set + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $loop|2 + else i32.const 0 i32.const 376 - i32.const 36 + i32.const 32 i32.const 4 call $~lib/builtins/abort unreachable end + unreachable + end + end + local.get $4 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 36 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $5 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 37 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $loop|3 + local.get $0 + i32.const 50 + i32.lt_u + if local.get $1 local.get $0 - call $~lib/map/Map#delete - local.get $1 - local.get $0 - call $~lib/map/Map#has + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 41 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/map/Map#get + local.get $0 + i32.const 255 + i32.and + i32.const 20 + i32.add + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 42 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/map/Map#delete + local.get $1 + local.get $0 + call $~lib/map/Map#has if i32.const 0 i32.const 376 - i32.const 38 + i32.const 44 i32.const 4 call $~lib/builtins/abort unreachable @@ -4893,7 +5138,80 @@ if i32.const 0 i32.const 376 - i32.const 40 + i32.const 46 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $loop|4 + local.get $0 + i32.const 50 + i32.lt_u + if + local.get $1 + local.get $0 + call $~lib/map/Map#has + if + i32.const 0 + i32.const 376 + i32.const 50 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + local.get $0 + i32.const 255 + i32.and + i32.const 10 + i32.add + call $~lib/map/Map#set + local.get $1 + local.get $0 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 52 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/map/Map#delete + local.get $1 + local.get $0 + call $~lib/map/Map#has + if + i32.const 0 + i32.const 376 + i32.const 54 + i32.const 4 + call $~lib/builtins/abort + unreachable + else + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $loop|4 + end + unreachable + end + end + local.get $1 + i32.load offset=20 + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 56 i32.const 2 call $~lib/builtins/abort unreachable @@ -4905,18 +5223,26 @@ if i32.const 0 i32.const 376 - i32.const 44 + i32.const 60 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $3 + call $~lib/rt/pure/__release + local.get $6 + call $~lib/rt/pure/__release + local.get $4 + call $~lib/rt/pure/__release + local.get $5 + call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release ) - (func $~lib/map/Map#constructor (; 65 ;) (result i32) + (func $~lib/map/Map#constructor (; 77 ;) (result i32) (local $0 i32) i32.const 24 - i32.const 7 + i32.const 11 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain local.tee $0 @@ -4941,7 +5267,7 @@ call $~lib/map/Map#clear local.get $0 ) - (func $~lib/util/hash/hash32 (; 66 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/hash/hash16 (; 78 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 255 i32.and @@ -4952,27 +5278,11 @@ local.get $0 i32.const 8 i32.shr_u - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.get $0 - i32.const 16 - i32.shr_u - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.get $0 - i32.const 24 - i32.shr_u i32.xor i32.const 16777619 i32.mul ) - (func $~lib/map/Map#find (; 67 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/map/Map#find (; 79 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.load local.get $0 @@ -4995,8 +5305,10 @@ i32.const 0 else local.get $0 - i32.load + i32.load16_u local.get $1 + i32.const 65535 + i32.and i32.eq end if @@ -5015,16 +5327,20 @@ end i32.const 0 ) - (func $~lib/map/Map#has (; 68 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#has (; 80 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 local.get $1 - call $~lib/util/hash/hash32 - call $~lib/map/Map#find + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + call $~lib/util/hash/hash16 + call $~lib/map/Map#find i32.const 0 i32.ne ) - (func $~lib/map/Map#rehash (; 69 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 81 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -5075,16 +5391,16 @@ if local.get $3 local.get $2 - i32.load - i32.store + i32.load16_s + i32.store16 local.get $3 local.get $2 i32.load offset=4 i32.store offset=4 local.get $3 local.get $2 - i32.load - call $~lib/util/hash/hash32 + i32.load16_s + call $~lib/util/hash/hash16 local.get $1 i32.and i32.const 2 @@ -5156,16 +5472,20 @@ local.get $4 call $~lib/rt/pure/__release ) - (func $~lib/map/Map#set (; 70 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/map/Map#set (; 82 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) local.get $0 local.get $1 local.get $1 - call $~lib/util/hash/hash32 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + call $~lib/util/hash/hash16 local.tee $4 - call $~lib/map/Map#find + call $~lib/map/Map#find local.tee $3 if local.get $3 @@ -5199,7 +5519,7 @@ i32.const 1 i32.or end - call $~lib/map/Map#rehash + call $~lib/map/Map#rehash end local.get $0 i32.load offset=8 @@ -5218,7 +5538,7 @@ i32.add local.tee $3 local.get $1 - i32.store + i32.store16 local.get $3 local.get $2 i32.store offset=4 @@ -5246,12 +5566,16 @@ i32.store end ) - (func $~lib/map/Map#get (; 71 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#get (; 83 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 local.get $1 - call $~lib/util/hash/hash32 - call $~lib/map/Map#find + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + call $~lib/util/hash/hash16 + call $~lib/map/Map#find local.tee $0 i32.eqz if @@ -5265,424 +5589,523 @@ local.get $0 i32.load offset=4 ) - (func $~lib/map/Map#delete (; 72 ;) (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 + (func $~lib/array/Array#__set (; 84 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) local.get $1 - call $~lib/util/hash/hash32 - call $~lib/map/Map#find - local.tee $1 - i32.eqz + local.get $0 + i32.load offset=12 + i32.ge_u if - return + local.get $1 + i32.const 0 + i32.lt_s + if + i32.const 280 + i32.const 512 + i32.const 109 + i32.const 21 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $3 + i32.const 1 + call $~lib/array/ensureSize + local.get $0 + local.get $3 + i32.store offset=12 end + local.get $0 + i32.load offset=4 local.get $1 - local.get $1 - i32.load offset=8 i32.const 1 - i32.or - i32.store offset=8 - local.get $0 + i32.shl + i32.add + local.get $2 + i32.store16 + ) + (func $~lib/array/Array#set:length (; 85 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 + i32.load offset=12 + drop local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.tee $2 + local.get $1 i32.const 1 - i32.add - i32.const 4 + call $~lib/array/ensureSize local.get $0 - i32.load offset=20 - local.tee $1 - i32.const 4 local.get $1 - i32.gt_u - select - i32.ge_u - if (result i32) - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - else - i32.const 0 - end - if - local.get $0 - local.get $2 - call $~lib/map/Map#rehash - end + i32.store offset=12 ) - (func $std/map/testNumeric (; 73 ;) (type $FUNCSIG$v) - (local $0 i32) + (func $~lib/map/Map#keys (; 86 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) - call $~lib/map/Map#constructor - local.set $1 + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + i32.load offset=8 + local.set $4 + local.get $0 + i32.load offset=16 + local.set $2 + i32.const 16 + i32.const 12 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.get $2 + i32.const 1 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $1 + i32.const 0 + i32.store offset=12 + local.get $1 + local.get $2 + i32.store offset=12 + i32.const 0 + local.set $0 loop $loop|0 - local.get $0 - i32.const 100 + local.get $3 + local.get $2 i32.lt_s if - local.get $1 - local.get $0 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 376 - i32.const 6 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - local.get $0 - i32.const 10 + local.get $3 + i32.const 12 + i32.mul + local.get $4 i32.add - call $~lib/map/Map#set - local.get $1 - local.get $0 - call $~lib/map/Map#has + local.tee $5 + i32.load offset=8 + i32.const 1 + i32.and i32.eqz if - i32.const 0 - i32.const 376 - i32.const 8 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/map/Map#get - local.get $0 - i32.const 10 - i32.add - i32.ne - if - i32.const 0 - i32.const 376 - i32.const 9 - i32.const 4 - call $~lib/builtins/abort - unreachable - else + local.get $1 + local.get $0 + local.get $5 + i32.load16_s + call $~lib/array/Array#__set local.get $0 i32.const 1 i32.add local.set $0 - br $loop|0 end - unreachable + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $loop|0 end end local.get $1 - i32.load offset=20 - i32.const 100 - i32.ne + local.get $0 + call $~lib/array/Array#set:length + local.get $1 + ) + (func $~lib/map/Map#constructor (; 87 ;) (result i32) + (local $0 i32) + i32.const 24 + i32.const 13 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.tee $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + local.get $0 + call $~lib/map/Map#clear + local.get $0 + ) + (func $~lib/array/Array#__get (; 88 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u if - i32.const 0 - i32.const 376 - i32.const 11 - i32.const 2 + i32.const 280 + i32.const 512 + i32.const 93 + i32.const 41 call $~lib/builtins/abort unreachable end - i32.const 0 + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.load16_s + ) + (func $~lib/map/Map#find (; 89 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $2 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load local.set $0 - loop $loop|1 + loop $continue|0 local.get $0 - i32.const 100 - i32.lt_s if - local.get $1 - local.get $0 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 15 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/map/Map#get - local.get $0 - i32.const 10 - i32.add - i32.ne - if - i32.const 0 - i32.const 376 - i32.const 16 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - local.get $0 - i32.const 20 - i32.add - call $~lib/map/Map#set - local.get $1 local.get $0 - call $~lib/map/Map#has - i32.eqz - if + i32.load offset=4 + i32.const 1 + i32.and + if (result i32) i32.const 0 - i32.const 376 - i32.const 18 - i32.const 4 - call $~lib/builtins/abort - unreachable + else + local.get $0 + i32.load16_u + local.get $1 + i32.const 65535 + i32.and + i32.eq end - local.get $1 - local.get $0 - call $~lib/map/Map#get - local.get $0 - i32.const 20 - i32.add - i32.ne if - i32.const 0 - i32.const 376 - i32.const 19 - i32.const 4 - call $~lib/builtins/abort - unreachable + local.get $0 + return else local.get $0 - i32.const 1 - i32.add + i32.load offset=4 + i32.const -2 + i32.and local.set $0 - br $loop|1 + br $continue|0 end unreachable end end + i32.const 0 + ) + (func $~lib/map/Map#rehash (; 90 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) local.get $1 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 376 - i32.const 21 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $0 - loop $loop|2 - local.get $0 - i32.const 50 - i32.lt_s + i32.const 1 + i32.add + local.tee $4 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $5 + local.get $4 + i32.const 3 + i32.shl + i32.const 3 + i32.div_s + local.tee $6 + i32.const 3 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $4 + local.get $0 + i32.load offset=8 + local.tee $2 + local.get $0 + i32.load offset=16 + i32.const 3 + i32.shl + i32.add + local.set $7 + local.get $4 + local.set $3 + loop $continue|0 + local.get $2 + local.get $7 + i32.eq + i32.eqz if - local.get $1 - local.get $0 - call $~lib/map/Map#has + local.get $2 + i32.load offset=4 + i32.const 1 + i32.and i32.eqz if - i32.const 0 - i32.const 376 - i32.const 25 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/map/Map#get - local.get $0 - i32.const 20 - i32.add - i32.ne - if - i32.const 0 - i32.const 376 - i32.const 26 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/map/Map#delete - local.get $1 - local.get $0 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 376 - i32.const 28 - i32.const 4 - call $~lib/builtins/abort - unreachable - else - local.get $0 - i32.const 1 + local.get $3 + local.get $2 + i32.load16_s + i32.store16 + local.get $3 + local.get $2 + i32.load16_s offset=2 + i32.store16 offset=2 + local.get $3 + local.get $2 + i32.load16_s + call $~lib/util/hash/hash16 + local.get $1 + i32.and + i32.const 2 + i32.shl + local.get $5 i32.add - local.set $0 - br $loop|2 + local.tee $8 + i32.load + i32.store offset=4 + local.get $8 + local.get $3 + i32.store + local.get $3 + i32.const 8 + i32.add + local.set $3 end - unreachable + local.get $2 + i32.const 8 + i32.add + local.set $2 + br $continue|0 end end + local.get $5 + local.tee $2 + local.get $0 + i32.load + local.tee $3 + i32.ne + if + local.get $2 + call $~lib/rt/pure/__retain + local.set $2 + local.get $3 + call $~lib/rt/pure/__release + end + local.get $0 + local.get $2 + i32.store + local.get $0 local.get $1 - i32.load offset=20 - i32.const 50 + i32.store offset=4 + local.get $4 + local.tee $1 + local.get $0 + i32.load offset=8 + local.tee $2 i32.ne if - i32.const 0 - i32.const 376 - i32.const 30 - i32.const 2 - call $~lib/builtins/abort - unreachable + local.get $1 + call $~lib/rt/pure/__retain + local.set $1 + local.get $2 + call $~lib/rt/pure/__release end - i32.const 0 - local.set $0 - loop $loop|3 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $0 + local.get $6 + i32.store offset=12 + local.get $0 + local.get $0 + i32.load offset=20 + i32.store offset=16 + local.get $5 + call $~lib/rt/pure/__release + local.get $4 + call $~lib/rt/pure/__release + ) + (func $~lib/map/Map#set (; 91 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + local.get $1 + local.get $1 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + call $~lib/util/hash/hash16 + local.tee $4 + call $~lib/map/Map#find + local.tee $3 + if + local.get $3 + local.get $2 + i32.store16 offset=2 + else local.get $0 - i32.const 50 - i32.lt_s + i32.load offset=16 + local.get $0 + i32.load offset=12 + i32.eq if - local.get $1 - local.get $0 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 376 - i32.const 34 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - local.get $0 - i32.const 10 - i32.add - call $~lib/map/Map#set - local.get $1 local.get $0 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 36 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 local.get $0 - call $~lib/map/Map#delete - local.get $1 + i32.load offset=20 local.get $0 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 376 - i32.const 38 - i32.const 4 - call $~lib/builtins/abort - unreachable + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + local.get $0 + i32.load offset=4 else local.get $0 + i32.load offset=4 i32.const 1 - i32.add - local.set $0 - br $loop|3 + i32.shl + i32.const 1 + i32.or end - unreachable + call $~lib/map/Map#rehash end - end - local.get $1 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 376 - i32.const 40 + local.get $0 + i32.load offset=8 + local.set $3 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $5 + i32.const 1 + i32.add + i32.store offset=16 + local.get $5 + i32.const 3 + i32.shl + local.get $3 + i32.add + local.tee $3 + local.get $1 + i32.store16 + local.get $3 + local.get $2 + i32.store16 offset=2 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + local.get $3 + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $4 + i32.and i32.const 2 - call $~lib/builtins/abort - unreachable + i32.shl + i32.add + local.tee $0 + i32.load + i32.store offset=4 + local.get $0 + local.get $3 + i32.store end + ) + (func $~lib/map/Map#delete (; 92 ;) (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 local.get $1 - call $~lib/map/Map#clear local.get $1 - i32.load offset=20 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + call $~lib/util/hash/hash16 + call $~lib/map/Map#find + local.tee $1 + i32.eqz if - i32.const 0 - i32.const 376 - i32.const 44 - i32.const 2 - call $~lib/builtins/abort - unreachable + return end local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/map/Map#constructor (; 74 ;) (result i32) - (local $0 i32) - i32.const 24 - i32.const 8 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 + local.get $1 + i32.load offset=8 + i32.const 1 + i32.or i32.store offset=8 local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 local.get $0 - i32.const 0 + i32.load offset=20 + i32.const 1 + i32.sub i32.store offset=20 local.get $0 - call $~lib/map/Map#clear + i32.load offset=4 + i32.const 1 + i32.shr_u + local.tee $2 + i32.const 1 + i32.add + i32.const 4 local.get $0 + i32.load offset=20 + local.tee $1 + i32.const 4 + local.get $1 + i32.gt_u + select + i32.ge_u + if (result i32) + local.get $0 + i32.load offset=20 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + else + i32.const 0 + end + if + local.get $0 + local.get $2 + call $~lib/map/Map#rehash + end ) - (func $std/map/testNumeric (; 75 ;) (type $FUNCSIG$v) + (func $std/map/testNumeric (; 93 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) - call $~lib/map/Map#constructor + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + call $~lib/map/Map#constructor local.set $1 loop $loop|0 local.get $0 i32.const 100 - i32.lt_u + i32.lt_s if local.get $1 local.get $0 - call $~lib/map/Map#has + call $~lib/map/Map#has if i32.const 0 i32.const 376 @@ -5694,12 +6117,16 @@ local.get $1 local.get $0 local.get $0 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s i32.const 10 i32.add - call $~lib/map/Map#set + call $~lib/map/Map#set local.get $1 local.get $0 - call $~lib/map/Map#has + call $~lib/map/Map#has i32.eqz if i32.const 0 @@ -5711,8 +6138,12 @@ end local.get $1 local.get $0 - call $~lib/map/Map#get + call $~lib/map/Map#get local.get $0 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s i32.const 10 i32.add i32.ne @@ -5750,11 +6181,11 @@ loop $loop|1 local.get $0 i32.const 100 - i32.lt_u + i32.lt_s if local.get $1 local.get $0 - call $~lib/map/Map#has + call $~lib/map/Map#has i32.eqz if i32.const 0 @@ -5766,8 +6197,12 @@ end local.get $1 local.get $0 - call $~lib/map/Map#get + call $~lib/map/Map#get local.get $0 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s i32.const 10 i32.add i32.ne @@ -5782,12 +6217,16 @@ local.get $1 local.get $0 local.get $0 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s i32.const 20 i32.add - call $~lib/map/Map#set + call $~lib/map/Map#set local.get $1 local.get $0 - call $~lib/map/Map#has + call $~lib/map/Map#has i32.eqz if i32.const 0 @@ -5799,8 +6238,12 @@ end local.get $1 local.get $0 - call $~lib/map/Map#get + call $~lib/map/Map#get local.get $0 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s i32.const 20 i32.add i32.ne @@ -5833,71 +6276,97 @@ call $~lib/builtins/abort unreachable end + local.get $1 + call $~lib/map/Map#keys + local.set $3 + local.get $1 + call $~lib/map/Map#values + local.set $6 + call $~lib/map/Map#constructor + local.set $4 + call $~lib/map/Map#constructor + local.set $5 i32.const 0 local.set $0 loop $loop|2 local.get $0 - i32.const 50 - i32.lt_u + local.get $3 + i32.load offset=12 + i32.lt_s if - local.get $1 + local.get $3 local.get $0 - call $~lib/map/Map#has + call $~lib/array/Array#__get + local.set $2 + local.get $6 + local.get $0 + call $~lib/array/Array#__get + local.set $7 + local.get $1 + local.get $2 + call $~lib/map/Map#has i32.eqz if i32.const 0 i32.const 376 - i32.const 25 + i32.const 31 i32.const 4 call $~lib/builtins/abort unreachable end local.get $1 - local.get $0 - call $~lib/map/Map#get - local.get $0 + local.get $7 i32.const 20 - i32.add - i32.ne - if - i32.const 0 - i32.const 376 - i32.const 26 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/map/Map#delete - local.get $1 - local.get $0 - call $~lib/map/Map#has + i32.sub + call $~lib/map/Map#has if - i32.const 0 - i32.const 376 - i32.const 28 - i32.const 4 - call $~lib/builtins/abort - unreachable - else + local.get $4 + local.get $2 + local.get $2 + call $~lib/map/Map#set + local.get $5 + local.get $7 + i32.const 20 + i32.sub + local.tee $2 + local.get $2 + call $~lib/map/Map#set local.get $0 i32.const 1 i32.add local.set $0 br $loop|2 + else + i32.const 0 + i32.const 376 + i32.const 32 + i32.const 4 + call $~lib/builtins/abort + unreachable end unreachable end end - local.get $1 + local.get $4 i32.load offset=20 - i32.const 50 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 36 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $5 + i32.load offset=20 + i32.const 100 i32.ne if i32.const 0 i32.const 376 - i32.const 30 + i32.const 37 i32.const 2 call $~lib/builtins/abort unreachable @@ -5907,15 +6376,88 @@ loop $loop|3 local.get $0 i32.const 50 - i32.lt_u + i32.lt_s if local.get $1 local.get $0 - call $~lib/map/Map#has - if + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 41 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/map/Map#get + local.get $0 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + i32.const 20 + i32.add + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 42 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/map/Map#delete + local.get $1 + local.get $0 + call $~lib/map/Map#has + if + i32.const 0 + i32.const 376 + i32.const 44 + i32.const 4 + call $~lib/builtins/abort + unreachable + else + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $loop|3 + end + unreachable + end + end + local.get $1 + i32.load offset=20 + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 46 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $loop|4 + local.get $0 + i32.const 50 + i32.lt_s + if + local.get $1 + local.get $0 + call $~lib/map/Map#has + if i32.const 0 i32.const 376 - i32.const 34 + i32.const 50 i32.const 4 call $~lib/builtins/abort unreachable @@ -5923,31 +6465,35 @@ local.get $1 local.get $0 local.get $0 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s i32.const 10 i32.add - call $~lib/map/Map#set + call $~lib/map/Map#set local.get $1 local.get $0 - call $~lib/map/Map#has + call $~lib/map/Map#has i32.eqz if i32.const 0 i32.const 376 - i32.const 36 + i32.const 52 i32.const 4 call $~lib/builtins/abort unreachable end local.get $1 local.get $0 - call $~lib/map/Map#delete + call $~lib/map/Map#delete local.get $1 local.get $0 - call $~lib/map/Map#has + call $~lib/map/Map#has if i32.const 0 i32.const 376 - i32.const 38 + i32.const 54 i32.const 4 call $~lib/builtins/abort unreachable @@ -5956,7 +6502,7 @@ i32.const 1 i32.add local.set $0 - br $loop|3 + br $loop|4 end unreachable end @@ -5968,7 +6514,7 @@ if i32.const 0 i32.const 376 - i32.const 40 + i32.const 56 i32.const 2 call $~lib/builtins/abort unreachable @@ -5980,51 +6526,26 @@ if i32.const 0 i32.const 376 - i32.const 44 + i32.const 60 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $1 + local.get $3 call $~lib/rt/pure/__release - ) - (func $~lib/map/Map#clear (; 76 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - local.get $0 - i32.load + local.get $6 call $~lib/rt/pure/__release - local.get $0 - local.get $1 - i32.store - local.get $0 - i32.const 3 - i32.store offset=4 - i32.const 64 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - local.get $0 - i32.load offset=8 + local.get $4 + call $~lib/rt/pure/__release + local.get $5 call $~lib/rt/pure/__release - local.get $0 local.get $1 - i32.store offset=8 - local.get $0 - i32.const 4 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 + call $~lib/rt/pure/__release ) - (func $~lib/map/Map#constructor (; 77 ;) (result i32) + (func $~lib/map/Map#constructor (; 94 ;) (result i32) (local $0 i32) i32.const 24 - i32.const 9 + i32.const 14 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain local.tee $0 @@ -6046,128 +6567,21 @@ i32.const 0 i32.store offset=20 local.get $0 - call $~lib/map/Map#clear + call $~lib/map/Map#clear local.get $0 ) - (func $~lib/util/hash/hash64 (; 78 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) - (local $1 i32) - local.get $0 - i32.wrap_i64 - local.tee $1 - i32.const 255 - i32.and - i32.const -2128831035 - i32.xor - i32.const 16777619 - i32.mul - local.get $1 - i32.const 8 - i32.shr_u - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.get $1 - i32.const 16 - i32.shr_u - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.get $1 - i32.const 24 - i32.shr_u - i32.xor - i32.const 16777619 - i32.mul + (func $~lib/map/Map#has (; 95 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.tee $1 - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.get $1 - i32.const 8 - i32.shr_u - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul local.get $1 - i32.const 16 - i32.shr_u - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul local.get $1 - i32.const 24 - i32.shr_u - i32.xor - i32.const 16777619 - i32.mul - ) - (func $~lib/map/Map#find (; 79 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $2 + i32.const 65535 i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - loop $continue|0 - local.get $0 - if - local.get $0 - i32.load offset=12 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $0 - i64.load - local.get $1 - i64.eq - end - if - local.get $0 - return - else - local.get $0 - i32.load offset=12 - i32.const -2 - i32.and - local.set $0 - br $continue|0 - end - unreachable - end - end - i32.const 0 - ) - (func $~lib/map/Map#has (; 80 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) - local.get $0 - local.get $1 - local.get $1 - call $~lib/util/hash/hash64 - call $~lib/map/Map#find + call $~lib/util/hash/hash16 + call $~lib/map/Map#find i32.const 0 i32.ne ) - (func $~lib/map/Map#rehash (; 81 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 96 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -6189,8 +6603,8 @@ i32.const 3 i32.div_s local.tee $6 - i32.const 4 - i32.shl + i32.const 12 + i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor local.set $4 local.get $0 @@ -6198,8 +6612,8 @@ local.tee $2 local.get $0 i32.load offset=16 - i32.const 4 - i32.shl + i32.const 12 + i32.mul i32.add local.set $7 local.get $4 @@ -6211,23 +6625,23 @@ i32.eqz if local.get $2 - i32.load offset=12 + i32.load offset=8 i32.const 1 i32.and i32.eqz if local.get $3 local.get $2 - i64.load - i64.store + i32.load16_u + i32.store16 local.get $3 local.get $2 - i32.load offset=8 - i32.store offset=8 + i32.load offset=4 + i32.store offset=4 local.get $3 local.get $2 - i64.load - call $~lib/util/hash/hash64 + i32.load16_u + call $~lib/util/hash/hash16 local.get $1 i32.and i32.const 2 @@ -6236,17 +6650,17 @@ i32.add local.tee $8 i32.load - i32.store offset=12 + i32.store offset=8 local.get $8 local.get $3 i32.store local.get $3 - i32.const 16 + i32.const 12 i32.add local.set $3 end local.get $2 - i32.const 16 + i32.const 12 i32.add local.set $2 br $continue|0 @@ -6299,21 +6713,23 @@ local.get $4 call $~lib/rt/pure/__release ) - (func $~lib/map/Map#set (; 82 ;) (type $FUNCSIG$viji) (param $0 i32) (param $1 i64) (param $2 i32) + (func $~lib/map/Map#set (; 97 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) local.get $0 local.get $1 local.get $1 - call $~lib/util/hash/hash64 + i32.const 65535 + i32.and + call $~lib/util/hash/hash16 local.tee $4 - call $~lib/map/Map#find + call $~lib/map/Map#find local.tee $3 if local.get $3 local.get $2 - i32.store offset=8 + i32.store offset=4 else local.get $0 i32.load offset=16 @@ -6342,7 +6758,7 @@ i32.const 1 i32.or end - call $~lib/map/Map#rehash + call $~lib/map/Map#rehash end local.get $0 i32.load offset=8 @@ -6355,16 +6771,16 @@ i32.add i32.store offset=16 local.get $5 - i32.const 4 - i32.shl + i32.const 12 + i32.mul local.get $3 i32.add local.tee $3 local.get $1 - i64.store + i32.store16 local.get $3 local.get $2 - i32.store offset=8 + i32.store offset=4 local.get $0 local.get $0 i32.load offset=20 @@ -6383,18 +6799,20 @@ i32.add local.tee $0 i32.load - i32.store offset=12 + i32.store offset=8 local.get $0 local.get $3 i32.store end ) - (func $~lib/map/Map#get (; 83 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) + (func $~lib/map/Map#get (; 98 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 local.get $1 - call $~lib/util/hash/hash64 - call $~lib/map/Map#find + i32.const 65535 + i32.and + call $~lib/util/hash/hash16 + call $~lib/map/Map#find local.tee $0 i32.eqz if @@ -6406,182 +6824,3673 @@ unreachable end local.get $0 - i32.load offset=8 + i32.load offset=4 ) - (func $~lib/map/Map#delete (; 84 ;) (param $0 i32) (param $1 i64) + (func $~lib/map/Map#keys (; 99 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) + (local $4 i32) + (local $5 i32) local.get $0 - local.get $1 - local.get $1 - call $~lib/util/hash/hash64 - call $~lib/map/Map#find - local.tee $2 - i32.eqz - if - return - end - local.get $2 + i32.load offset=8 + local.set $4 + local.get $0 + i32.load offset=16 + local.set $2 + i32.const 16 + i32.const 15 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain local.get $2 - i32.load offset=12 i32.const 1 - i32.or + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $1 + i32.const 0 i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.tee $3 - i32.const 1 - i32.add - i32.const 4 - local.get $0 - i32.load offset=20 - local.tee $2 - i32.const 4 + local.get $1 local.get $2 - i32.gt_u - select - i32.ge_u - if (result i32) - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - else - i32.const 0 - end - if - local.get $0 - local.get $3 - call $~lib/map/Map#rehash - end - ) - (func $std/map/testNumeric (; 85 ;) (type $FUNCSIG$v) - (local $0 i64) - (local $1 i32) - call $~lib/map/Map#constructor - local.set $1 + i32.store offset=12 + i32.const 0 + local.set $0 loop $loop|0 - local.get $0 - i64.const 100 - i64.lt_s + local.get $3 + local.get $2 + i32.lt_s if - local.get $1 - local.get $0 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 376 - i32.const 6 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - local.get $0 - i32.wrap_i64 - i32.const 10 + local.get $3 + i32.const 12 + i32.mul + local.get $4 i32.add - call $~lib/map/Map#set - local.get $1 - local.get $0 - call $~lib/map/Map#has + local.tee $5 + i32.load offset=8 + i32.const 1 + i32.and i32.eqz if - i32.const 0 - i32.const 376 - i32.const 8 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/map/Map#get - local.get $0 - i32.wrap_i64 - i32.const 10 - i32.add - i32.ne - if - i32.const 0 - i32.const 376 - i32.const 9 - i32.const 4 - call $~lib/builtins/abort - unreachable - else + local.get $1 local.get $0 - i64.const 1 - i64.add + local.get $5 + i32.load16_u + call $~lib/array/Array#__set + local.get $0 + i32.const 1 + i32.add local.set $0 - br $loop|0 end - unreachable + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $loop|0 end end local.get $1 - i32.load offset=20 - i32.const 100 - i32.ne + local.get $0 + call $~lib/array/Array#set:length + local.get $1 + ) + (func $~lib/map/Map#constructor (; 100 ;) (result i32) + (local $0 i32) + i32.const 24 + i32.const 16 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.tee $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + local.get $0 + call $~lib/map/Map#clear + local.get $0 + ) + (func $~lib/array/Array#__get (; 101 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u if - i32.const 0 - i32.const 376 - i32.const 11 - i32.const 2 + i32.const 280 + i32.const 512 + i32.const 93 + i32.const 41 call $~lib/builtins/abort unreachable end - i64.const 0 - local.set $0 - loop $loop|1 - local.get $0 - i64.const 100 - i64.lt_s - if - local.get $1 - local.get $0 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 15 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/map/Map#get - local.get $0 - i32.wrap_i64 - i32.const 10 - i32.add - i32.ne - if - i32.const 0 - i32.const 376 - i32.const 16 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.load16_u + ) + (func $~lib/map/Map#rehash (; 102 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $1 + i32.const 1 + i32.add + local.tee $4 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $5 + local.get $4 + i32.const 3 + i32.shl + i32.const 3 + i32.div_s + local.tee $6 + i32.const 3 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $4 + local.get $0 + i32.load offset=8 + local.tee $2 + local.get $0 + i32.load offset=16 + i32.const 3 + i32.shl + i32.add + local.set $7 + local.get $4 + local.set $3 + loop $continue|0 + local.get $2 + local.get $7 + i32.eq + i32.eqz + if + local.get $2 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz + if + local.get $3 + local.get $2 + i32.load16_u + i32.store16 + local.get $3 + local.get $2 + i32.load16_u offset=2 + i32.store16 offset=2 + local.get $3 + local.get $2 + i32.load16_u + call $~lib/util/hash/hash16 + local.get $1 + i32.and + i32.const 2 + i32.shl + local.get $5 + i32.add + local.tee $8 + i32.load + i32.store offset=4 + local.get $8 + local.get $3 + i32.store + local.get $3 + i32.const 8 + i32.add + local.set $3 + end + local.get $2 + i32.const 8 + i32.add + local.set $2 + br $continue|0 + end + end + local.get $5 + local.tee $2 + local.get $0 + i32.load + local.tee $3 + i32.ne + if + local.get $2 + call $~lib/rt/pure/__retain + local.set $2 + local.get $3 + call $~lib/rt/pure/__release + end + local.get $0 + local.get $2 + i32.store + local.get $0 + local.get $1 + i32.store offset=4 + local.get $4 + local.tee $1 + local.get $0 + i32.load offset=8 + local.tee $2 + i32.ne + if + local.get $1 + call $~lib/rt/pure/__retain + local.set $1 + local.get $2 + call $~lib/rt/pure/__release + end + local.get $0 + local.get $1 + i32.store offset=8 + local.get $0 + local.get $6 + i32.store offset=12 + local.get $0 + local.get $0 + i32.load offset=20 + i32.store offset=16 + local.get $5 + call $~lib/rt/pure/__release + local.get $4 + call $~lib/rt/pure/__release + ) + (func $~lib/map/Map#set (; 103 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + local.get $1 + local.get $1 + i32.const 65535 + i32.and + call $~lib/util/hash/hash16 + local.tee $4 + call $~lib/map/Map#find + local.tee $3 + if + local.get $3 + local.get $2 + i32.store16 offset=2 + else + local.get $0 + i32.load offset=16 + local.get $0 + i32.load offset=12 + i32.eq + if + local.get $0 + local.get $0 + i32.load offset=20 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + local.get $0 + i32.load offset=4 + else + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/map/Map#rehash + end + local.get $0 + i32.load offset=8 + local.set $3 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $5 + i32.const 1 + i32.add + i32.store offset=16 + local.get $5 + i32.const 3 + i32.shl + local.get $3 + i32.add + local.tee $3 + local.get $1 + i32.store16 + local.get $3 + local.get $2 + i32.store16 offset=2 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + local.get $3 + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $4 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $0 + i32.load + i32.store offset=4 + local.get $0 + local.get $3 + i32.store + end + ) + (func $~lib/map/Map#delete (; 104 ;) (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + local.get $1 + i32.const 65535 + i32.and + call $~lib/util/hash/hash16 + call $~lib/map/Map#find + local.tee $1 + i32.eqz + if + return + end + local.get $1 + local.get $1 + i32.load offset=8 + i32.const 1 + i32.or + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.sub + i32.store offset=20 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.tee $2 + i32.const 1 + i32.add + i32.const 4 + local.get $0 + i32.load offset=20 + local.tee $1 + i32.const 4 + local.get $1 + i32.gt_u + select + i32.ge_u + if (result i32) + local.get $0 + i32.load offset=20 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + else + i32.const 0 + end + if + local.get $0 + local.get $2 + call $~lib/map/Map#rehash + end + ) + (func $std/map/testNumeric (; 105 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + call $~lib/map/Map#constructor + local.set $1 + loop $loop|0 + local.get $0 + i32.const 100 + i32.lt_u + if + local.get $1 + local.get $0 + call $~lib/map/Map#has + if + i32.const 0 + i32.const 376 + i32.const 6 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + local.get $0 + i32.const 65535 + i32.and + i32.const 10 + i32.add + call $~lib/map/Map#set + local.get $1 + local.get $0 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 8 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/map/Map#get + local.get $0 + i32.const 65535 + i32.and + i32.const 10 + i32.add + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 9 + i32.const 4 + call $~lib/builtins/abort + unreachable + else + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $loop|0 + end + unreachable + end + end + local.get $1 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 11 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $loop|1 + local.get $0 + i32.const 100 + i32.lt_u + if + local.get $1 + local.get $0 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 15 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/map/Map#get + local.get $0 + i32.const 65535 + i32.and + i32.const 10 + i32.add + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 16 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + local.get $0 + i32.const 65535 + i32.and + i32.const 20 + i32.add + call $~lib/map/Map#set + local.get $1 + local.get $0 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 18 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/map/Map#get + local.get $0 + i32.const 65535 + i32.and + i32.const 20 + i32.add + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 19 + i32.const 4 + call $~lib/builtins/abort + unreachable + else + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $loop|1 + end + unreachable + end + end + local.get $1 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 21 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/map/Map#keys + local.set $3 + local.get $1 + call $~lib/map/Map#values + local.set $6 + call $~lib/map/Map#constructor + local.set $4 + call $~lib/map/Map#constructor + local.set $5 + i32.const 0 + local.set $0 + loop $loop|2 + local.get $0 + local.get $3 + i32.load offset=12 + i32.lt_s + if + local.get $3 + local.get $0 + call $~lib/array/Array#__get + local.set $2 + local.get $6 + local.get $0 + call $~lib/array/Array#__get + local.set $7 + local.get $1 + local.get $2 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 31 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $7 + i32.const 20 + i32.sub + call $~lib/map/Map#has + if + local.get $4 + local.get $2 + local.get $2 + call $~lib/map/Map#set + local.get $5 + local.get $7 + i32.const 20 + i32.sub + local.tee $2 + local.get $2 + call $~lib/map/Map#set + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $loop|2 + else + i32.const 0 + i32.const 376 + i32.const 32 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + unreachable + end + end + local.get $4 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 36 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $5 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 37 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $loop|3 + local.get $0 + i32.const 50 + i32.lt_u + if + local.get $1 + local.get $0 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 41 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/map/Map#get + local.get $0 + i32.const 65535 + i32.and + i32.const 20 + i32.add + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 42 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/map/Map#delete + local.get $1 + local.get $0 + call $~lib/map/Map#has + if + i32.const 0 + i32.const 376 + i32.const 44 + i32.const 4 + call $~lib/builtins/abort + unreachable + else + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $loop|3 + end + unreachable + end + end + local.get $1 + i32.load offset=20 + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 46 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $loop|4 + local.get $0 + i32.const 50 + i32.lt_u + if + local.get $1 + local.get $0 + call $~lib/map/Map#has + if + i32.const 0 + i32.const 376 + i32.const 50 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + local.get $0 + i32.const 65535 + i32.and + i32.const 10 + i32.add + call $~lib/map/Map#set + local.get $1 + local.get $0 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 52 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/map/Map#delete + local.get $1 + local.get $0 + call $~lib/map/Map#has + if + i32.const 0 + i32.const 376 + i32.const 54 + i32.const 4 + call $~lib/builtins/abort + unreachable + else + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $loop|4 + end + unreachable + end + end + local.get $1 + i32.load offset=20 + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 56 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/map/Map#clear + local.get $1 + i32.load offset=20 + if + i32.const 0 + i32.const 376 + i32.const 60 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $3 + call $~lib/rt/pure/__release + local.get $6 + call $~lib/rt/pure/__release + local.get $4 + call $~lib/rt/pure/__release + local.get $5 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release + ) + (func $~lib/map/Map#has (; 106 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + local.get $1 + call $~lib/util/hash/hash32 + call $~lib/map/Map#find + i32.const 0 + i32.ne + ) + (func $~lib/map/Map#get (; 107 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + local.get $1 + call $~lib/util/hash/hash32 + call $~lib/map/Map#find + local.tee $0 + i32.eqz + if + i32.const 416 + i32.const 472 + i32.const 111 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + ) + (func $~lib/array/Array#__set (; 108 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + local.get $1 + i32.const 0 + i32.lt_s + if + i32.const 280 + i32.const 512 + i32.const 109 + i32.const 21 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $3 + i32.const 2 + call $~lib/array/ensureSize + local.get $0 + local.get $3 + i32.store offset=12 + end + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $2 + i32.store + ) + (func $~lib/map/Map#keys (; 109 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + i32.load offset=8 + local.set $3 + local.get $0 + i32.load offset=16 + local.tee $4 + call $~lib/array/Array#constructor + local.set $2 + i32.const 0 + local.set $0 + loop $loop|0 + block $break|0 + local.get $1 + local.get $4 + i32.ge_s + br_if $break|0 + local.get $1 + i32.const 12 + i32.mul + local.get $3 + i32.add + local.tee $5 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $2 + local.get $0 + local.get $5 + i32.load + call $~lib/array/Array#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $loop|0 + end + end + local.get $2 + local.get $0 + call $~lib/array/Array#set:length + local.get $2 + ) + (func $~lib/map/Map#delete (; 110 ;) (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + local.get $1 + call $~lib/util/hash/hash32 + call $~lib/map/Map#find + local.tee $1 + i32.eqz + if + return + end + local.get $1 + local.get $1 + i32.load offset=8 + i32.const 1 + i32.or + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.sub + i32.store offset=20 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.tee $2 + i32.const 1 + i32.add + i32.const 4 + local.get $0 + i32.load offset=20 + local.tee $1 + i32.const 4 + local.get $1 + i32.gt_u + select + i32.ge_u + if (result i32) + local.get $0 + i32.load offset=20 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + else + i32.const 0 + end + if + local.get $0 + local.get $2 + call $~lib/map/Map#rehash + end + ) + (func $std/map/testNumeric (; 111 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + call $~lib/map/Map#constructor + local.set $1 + loop $loop|0 + local.get $0 + i32.const 100 + i32.lt_s + if + local.get $1 + local.get $0 + call $~lib/map/Map#has + if + i32.const 0 + i32.const 376 + i32.const 6 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + local.get $0 + i32.const 10 + i32.add + call $~lib/map/Map#set + local.get $1 + local.get $0 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 8 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/map/Map#get + local.get $0 + i32.const 10 + i32.add + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 9 + i32.const 4 + call $~lib/builtins/abort + unreachable + else + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $loop|0 + end + unreachable + end + end + local.get $1 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 11 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $loop|1 + local.get $0 + i32.const 100 + i32.lt_s + if + local.get $1 + local.get $0 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 15 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/map/Map#get + local.get $0 + i32.const 10 + i32.add + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 16 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + local.get $0 + i32.const 20 + i32.add + call $~lib/map/Map#set + local.get $1 + local.get $0 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 18 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/map/Map#get + local.get $0 + i32.const 20 + i32.add + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 19 + i32.const 4 + call $~lib/builtins/abort + unreachable + else + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $loop|1 + end + unreachable + end + end + local.get $1 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 21 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/map/Map#keys + local.set $3 + local.get $1 + call $~lib/map/Map#values + local.set $6 + call $~lib/map/Map#constructor + local.set $4 + call $~lib/map/Map#constructor + local.set $5 + i32.const 0 + local.set $0 + loop $loop|2 + local.get $0 + local.get $3 + i32.load offset=12 + i32.lt_s + if + local.get $3 + local.get $0 + call $~lib/array/Array#__get + local.set $2 + local.get $6 + local.get $0 + call $~lib/array/Array#__get + local.set $7 + local.get $1 + local.get $2 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 31 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $7 + i32.const 20 + i32.sub + call $~lib/map/Map#has + if + local.get $4 + local.get $2 + local.get $2 + call $~lib/map/Map#set + local.get $5 + local.get $7 + i32.const 20 + i32.sub + local.tee $2 + local.get $2 + call $~lib/map/Map#set + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $loop|2 + else + i32.const 0 + i32.const 376 + i32.const 32 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + unreachable + end + end + local.get $4 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 36 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $5 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 37 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $loop|3 + local.get $0 + i32.const 50 + i32.lt_s + if + local.get $1 + local.get $0 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 41 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/map/Map#get + local.get $0 + i32.const 20 + i32.add + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 42 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/map/Map#delete + local.get $1 + local.get $0 + call $~lib/map/Map#has + if + i32.const 0 + i32.const 376 + i32.const 44 + i32.const 4 + call $~lib/builtins/abort + unreachable + else + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $loop|3 + end + unreachable + end + end + local.get $1 + i32.load offset=20 + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 46 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $loop|4 + local.get $0 + i32.const 50 + i32.lt_s + if + local.get $1 + local.get $0 + call $~lib/map/Map#has + if + i32.const 0 + i32.const 376 + i32.const 50 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + local.get $0 + i32.const 10 + i32.add + call $~lib/map/Map#set + local.get $1 + local.get $0 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 52 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/map/Map#delete + local.get $1 + local.get $0 + call $~lib/map/Map#has + if + i32.const 0 + i32.const 376 + i32.const 54 + i32.const 4 + call $~lib/builtins/abort + unreachable + else + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $loop|4 + end + unreachable + end + end + local.get $1 + i32.load offset=20 + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 56 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/map/Map#clear + local.get $1 + i32.load offset=20 + if + i32.const 0 + i32.const 376 + i32.const 60 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $3 + call $~lib/rt/pure/__release + local.get $6 + call $~lib/rt/pure/__release + local.get $4 + call $~lib/rt/pure/__release + local.get $5 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release + ) + (func $~lib/map/Map#constructor (; 112 ;) (result i32) + (local $0 i32) + i32.const 24 + i32.const 17 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.tee $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + local.get $0 + call $~lib/map/Map#clear + local.get $0 + ) + (func $~lib/map/Map#keys (; 113 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + i32.load offset=8 + local.set $4 + local.get $0 + i32.load offset=16 + local.set $2 + i32.const 16 + i32.const 18 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.get $2 + i32.const 2 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $1 + i32.const 0 + i32.store offset=12 + local.get $1 + local.get $2 + i32.store offset=12 + i32.const 0 + local.set $0 + loop $loop|0 + local.get $3 + local.get $2 + i32.lt_s + if + local.get $3 + i32.const 12 + i32.mul + local.get $4 + i32.add + local.tee $5 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $1 + local.get $0 + local.get $5 + i32.load + call $~lib/array/Array#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $loop|0 + end + end + local.get $1 + local.get $0 + call $~lib/array/Array#set:length + local.get $1 + ) + (func $~lib/map/Map#constructor (; 114 ;) (result i32) + (local $0 i32) + i32.const 24 + i32.const 19 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.tee $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + local.get $0 + call $~lib/map/Map#clear + local.get $0 + ) + (func $std/map/testNumeric (; 115 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + call $~lib/map/Map#constructor + local.set $1 + loop $loop|0 + local.get $0 + i32.const 100 + i32.lt_u + if + local.get $1 + local.get $0 + call $~lib/map/Map#has + if + i32.const 0 + i32.const 376 + i32.const 6 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + local.get $0 + i32.const 10 + i32.add + call $~lib/map/Map#set + local.get $1 + local.get $0 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 8 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/map/Map#get + local.get $0 + i32.const 10 + i32.add + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 9 + i32.const 4 + call $~lib/builtins/abort + unreachable + else + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $loop|0 + end + unreachable + end + end + local.get $1 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 11 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $loop|1 + local.get $0 + i32.const 100 + i32.lt_u + if + local.get $1 + local.get $0 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 15 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/map/Map#get + local.get $0 + i32.const 10 + i32.add + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 16 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + local.get $0 + i32.const 20 + i32.add + call $~lib/map/Map#set + local.get $1 + local.get $0 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 18 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/map/Map#get + local.get $0 + i32.const 20 + i32.add + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 19 + i32.const 4 + call $~lib/builtins/abort + unreachable + else + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $loop|1 + end + unreachable + end + end + local.get $1 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 21 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/map/Map#keys + local.set $3 + local.get $1 + call $~lib/map/Map#values + local.set $6 + call $~lib/map/Map#constructor + local.set $4 + call $~lib/map/Map#constructor + local.set $5 + i32.const 0 + local.set $0 + loop $loop|2 + local.get $0 + local.get $3 + i32.load offset=12 + i32.lt_s + if + local.get $3 + local.get $0 + call $~lib/array/Array#__get + local.set $2 + local.get $6 + local.get $0 + call $~lib/array/Array#__get + local.set $7 + local.get $1 + local.get $2 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 31 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $7 + i32.const 20 + i32.sub + call $~lib/map/Map#has + if + local.get $4 + local.get $2 + local.get $2 + call $~lib/map/Map#set + local.get $5 + local.get $7 + i32.const 20 + i32.sub + local.tee $2 + local.get $2 + call $~lib/map/Map#set + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $loop|2 + else + i32.const 0 + i32.const 376 + i32.const 32 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + unreachable + end + end + local.get $4 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 36 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $5 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 37 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $loop|3 + local.get $0 + i32.const 50 + i32.lt_u + if + local.get $1 + local.get $0 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 41 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/map/Map#get + local.get $0 + i32.const 20 + i32.add + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 42 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/map/Map#delete + local.get $1 + local.get $0 + call $~lib/map/Map#has + if + i32.const 0 + i32.const 376 + i32.const 44 + i32.const 4 + call $~lib/builtins/abort + unreachable + else + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $loop|3 + end + unreachable + end + end + local.get $1 + i32.load offset=20 + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 46 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $loop|4 + local.get $0 + i32.const 50 + i32.lt_u + if + local.get $1 + local.get $0 + call $~lib/map/Map#has + if + i32.const 0 + i32.const 376 + i32.const 50 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + local.get $0 + i32.const 10 + i32.add + call $~lib/map/Map#set + local.get $1 + local.get $0 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 52 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/map/Map#delete + local.get $1 + local.get $0 + call $~lib/map/Map#has + if + i32.const 0 + i32.const 376 + i32.const 54 + i32.const 4 + call $~lib/builtins/abort + unreachable + else + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $loop|4 + end + unreachable + end + end + local.get $1 + i32.load offset=20 + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 56 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/map/Map#clear + local.get $1 + i32.load offset=20 + if + i32.const 0 + i32.const 376 + i32.const 60 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $3 + call $~lib/rt/pure/__release + local.get $6 + call $~lib/rt/pure/__release + local.get $4 + call $~lib/rt/pure/__release + local.get $5 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release + ) + (func $~lib/map/Map#clear (; 116 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + local.get $0 + i32.load + call $~lib/rt/pure/__release + local.get $0 + local.get $1 + i32.store + local.get $0 + i32.const 3 + i32.store offset=4 + i32.const 64 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + local.get $0 + i32.load offset=8 + call $~lib/rt/pure/__release + local.get $0 + local.get $1 + i32.store offset=8 + local.get $0 + i32.const 4 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + ) + (func $~lib/map/Map#constructor (; 117 ;) (result i32) + (local $0 i32) + i32.const 24 + i32.const 20 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.tee $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + local.get $0 + call $~lib/map/Map#clear + local.get $0 + ) + (func $~lib/util/hash/hash64 (; 118 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (local $1 i32) + local.get $0 + i32.wrap_i64 + local.tee $1 + i32.const 255 + i32.and + i32.const -2128831035 + i32.xor + i32.const 16777619 + i32.mul + local.get $1 + i32.const 8 + i32.shr_u + i32.const 255 + i32.and + i32.xor + i32.const 16777619 + i32.mul + local.get $1 + i32.const 16 + i32.shr_u + i32.const 255 + i32.and + i32.xor + i32.const 16777619 + i32.mul + local.get $1 + i32.const 24 + i32.shr_u + i32.xor + i32.const 16777619 + i32.mul + local.get $0 + i64.const 32 + i64.shr_u + i32.wrap_i64 + local.tee $1 + i32.const 255 + i32.and + i32.xor + i32.const 16777619 + i32.mul + local.get $1 + i32.const 8 + i32.shr_u + i32.const 255 + i32.and + i32.xor + i32.const 16777619 + i32.mul + local.get $1 + i32.const 16 + i32.shr_u + i32.const 255 + i32.and + i32.xor + i32.const 16777619 + i32.mul + local.get $1 + i32.const 24 + i32.shr_u + i32.xor + i32.const 16777619 + i32.mul + ) + (func $~lib/map/Map#find (; 119 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $2 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + loop $continue|0 + local.get $0 + if + local.get $0 + i32.load offset=12 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $0 + i64.load + local.get $1 + i64.eq + end + if + local.get $0 + return + else + local.get $0 + i32.load offset=12 + i32.const -2 + i32.and + local.set $0 + br $continue|0 + end + unreachable + end + end + i32.const 0 + ) + (func $~lib/map/Map#has (; 120 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) + local.get $0 + local.get $1 + local.get $1 + call $~lib/util/hash/hash64 + call $~lib/map/Map#find + i32.const 0 + i32.ne + ) + (func $~lib/map/Map#rehash (; 121 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $1 + i32.const 1 + i32.add + local.tee $4 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $5 + local.get $4 + i32.const 3 + i32.shl + i32.const 3 + i32.div_s + local.tee $6 + i32.const 4 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $4 + local.get $0 + i32.load offset=8 + local.tee $2 + local.get $0 + i32.load offset=16 + i32.const 4 + i32.shl + i32.add + local.set $7 + local.get $4 + local.set $3 + loop $continue|0 + local.get $2 + local.get $7 + i32.eq + i32.eqz + if + local.get $2 + i32.load offset=12 + i32.const 1 + i32.and + i32.eqz + if + local.get $3 + local.get $2 + i64.load + i64.store + local.get $3 + local.get $2 + i32.load offset=8 + i32.store offset=8 + local.get $3 + local.get $2 + i64.load + call $~lib/util/hash/hash64 + local.get $1 + i32.and + i32.const 2 + i32.shl + local.get $5 + i32.add + local.tee $8 + i32.load + i32.store offset=12 + local.get $8 + local.get $3 + i32.store + local.get $3 + i32.const 16 + i32.add + local.set $3 + end + local.get $2 + i32.const 16 + i32.add + local.set $2 + br $continue|0 + end + end + local.get $5 + local.tee $2 + local.get $0 + i32.load + local.tee $3 + i32.ne + if + local.get $2 + call $~lib/rt/pure/__retain + local.set $2 + local.get $3 + call $~lib/rt/pure/__release + end + local.get $0 + local.get $2 + i32.store + local.get $0 + local.get $1 + i32.store offset=4 + local.get $4 + local.tee $1 + local.get $0 + i32.load offset=8 + local.tee $2 + i32.ne + if + local.get $1 + call $~lib/rt/pure/__retain + local.set $1 + local.get $2 + call $~lib/rt/pure/__release + end + local.get $0 + local.get $1 + i32.store offset=8 + local.get $0 + local.get $6 + i32.store offset=12 + local.get $0 + local.get $0 + i32.load offset=20 + i32.store offset=16 + local.get $5 + call $~lib/rt/pure/__release + local.get $4 + call $~lib/rt/pure/__release + ) + (func $~lib/map/Map#set (; 122 ;) (type $FUNCSIG$viji) (param $0 i32) (param $1 i64) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + local.get $1 + local.get $1 + call $~lib/util/hash/hash64 + local.tee $4 + call $~lib/map/Map#find + local.tee $3 + if + local.get $3 + local.get $2 + i32.store offset=8 + else + local.get $0 + i32.load offset=16 + local.get $0 + i32.load offset=12 + i32.eq + if + local.get $0 + local.get $0 + i32.load offset=20 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + local.get $0 + i32.load offset=4 + else + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/map/Map#rehash + end + local.get $0 + i32.load offset=8 + local.set $3 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $5 + i32.const 1 + i32.add + i32.store offset=16 + local.get $5 + i32.const 4 + i32.shl + local.get $3 + i32.add + local.tee $3 + local.get $1 + i64.store + local.get $3 + local.get $2 + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + local.get $3 + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $4 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $0 + i32.load + i32.store offset=12 + local.get $0 + local.get $3 + i32.store + end + ) + (func $~lib/map/Map#get (; 123 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) + local.get $0 + local.get $1 + local.get $1 + call $~lib/util/hash/hash64 + call $~lib/map/Map#find + local.tee $0 + i32.eqz + if + i32.const 416 + i32.const 472 + i32.const 111 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=8 + ) + (func $~lib/array/Array#__set (; 124 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + local.get $1 + i32.const 0 + i32.lt_s + if + i32.const 280 + i32.const 512 + i32.const 109 + i32.const 21 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $3 + i32.const 3 + call $~lib/array/ensureSize + local.get $0 + local.get $3 + i32.store offset=12 + end + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.get $2 + i64.store + ) + (func $~lib/array/Array#set:length (; 125 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + local.get $0 + i32.load offset=12 + drop + local.get $0 + local.get $1 + i32.const 3 + call $~lib/array/ensureSize + local.get $0 + local.get $1 + i32.store offset=12 + ) + (func $~lib/map/Map#keys (; 126 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + i32.load offset=8 + local.set $4 + local.get $0 + i32.load offset=16 + local.set $2 + i32.const 16 + i32.const 21 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.get $2 + i32.const 3 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $1 + i32.const 0 + i32.store offset=12 + local.get $1 + local.get $2 + i32.store offset=12 + i32.const 0 + local.set $0 + loop $loop|0 + local.get $3 + local.get $2 + i32.lt_s + if + local.get $3 + i32.const 4 + i32.shl + local.get $4 + i32.add + local.tee $5 + i32.load offset=12 + i32.const 1 + i32.and + i32.eqz + if + local.get $1 + local.get $0 + local.get $5 + i64.load + call $~lib/array/Array#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $loop|0 + end + end + local.get $1 + local.get $0 + call $~lib/array/Array#set:length + local.get $1 + ) + (func $~lib/map/Map#values (; 127 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + i32.load offset=8 + local.set $3 + local.get $0 + i32.load offset=16 + local.tee $4 + call $~lib/array/Array#constructor + local.set $2 + i32.const 0 + local.set $0 + loop $loop|0 + block $break|0 + local.get $0 + local.get $4 + i32.ge_s + br_if $break|0 + local.get $0 + i32.const 4 + i32.shl + local.get $3 + i32.add + local.tee $5 + i32.load offset=12 + i32.const 1 + i32.and + i32.eqz + if + local.get $2 + local.get $5 + i32.load offset=8 + call $~lib/array/Array#push + local.get $1 + i32.const 1 + i32.add + local.set $1 + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $loop|0 + end + end + local.get $2 + local.get $1 + call $~lib/array/Array#set:length + local.get $2 + ) + (func $~lib/map/Map#clear (; 128 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + local.get $0 + i32.load + call $~lib/rt/pure/__release + local.get $0 + local.get $1 + i32.store + local.get $0 + i32.const 3 + i32.store offset=4 + i32.const 96 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + local.get $0 + i32.load offset=8 + call $~lib/rt/pure/__release + local.get $0 + local.get $1 + i32.store offset=8 + local.get $0 + i32.const 4 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + ) + (func $~lib/map/Map#constructor (; 129 ;) (result i32) + (local $0 i32) + i32.const 24 + i32.const 22 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.tee $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + local.get $0 + call $~lib/map/Map#clear + local.get $0 + ) + (func $~lib/array/Array#__get (; 130 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 280 + i32.const 512 + i32.const 93 + i32.const 41 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 3 + i32.shl + i32.add + i64.load + ) + (func $~lib/map/Map#find (; 131 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $2 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + loop $continue|0 + local.get $0 + if + local.get $0 + i32.load offset=16 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $0 + i64.load + local.get $1 + i64.eq + end + if + local.get $0 + return + else + local.get $0 + i32.load offset=16 + i32.const -2 + i32.and + local.set $0 + br $continue|0 + end + unreachable + end + end + i32.const 0 + ) + (func $~lib/map/Map#rehash (; 132 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $1 + i32.const 1 + i32.add + local.tee $4 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $5 + local.get $4 + i32.const 3 + i32.shl + i32.const 3 + i32.div_s + local.tee $6 + i32.const 24 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $4 + local.get $0 + i32.load offset=8 + local.tee $2 + local.get $0 + i32.load offset=16 + i32.const 24 + i32.mul + i32.add + local.set $7 + local.get $4 + local.set $3 + loop $continue|0 + local.get $2 + local.get $7 + i32.eq + i32.eqz + if + local.get $2 + i32.load offset=16 + i32.const 1 + i32.and + i32.eqz + if + local.get $3 + local.get $2 + i64.load + i64.store + local.get $3 + local.get $2 + i64.load offset=8 + i64.store offset=8 + local.get $3 + local.get $2 + i64.load + call $~lib/util/hash/hash64 + local.get $1 + i32.and + i32.const 2 + i32.shl + local.get $5 + i32.add + local.tee $8 + i32.load + i32.store offset=16 + local.get $8 + local.get $3 + i32.store + local.get $3 + i32.const 24 + i32.add + local.set $3 + end + local.get $2 + i32.const 24 + i32.add + local.set $2 + br $continue|0 + end + end + local.get $5 + local.tee $2 + local.get $0 + i32.load + local.tee $3 + i32.ne + if + local.get $2 + call $~lib/rt/pure/__retain + local.set $2 + local.get $3 + call $~lib/rt/pure/__release + end + local.get $0 + local.get $2 + i32.store + local.get $0 + local.get $1 + i32.store offset=4 + local.get $4 + local.tee $1 + local.get $0 + i32.load offset=8 + local.tee $2 + i32.ne + if + local.get $1 + call $~lib/rt/pure/__retain + local.set $1 + local.get $2 + call $~lib/rt/pure/__release + end + local.get $0 + local.get $1 + i32.store offset=8 + local.get $0 + local.get $6 + i32.store offset=12 + local.get $0 + local.get $0 + i32.load offset=20 + i32.store offset=16 + local.get $5 + call $~lib/rt/pure/__release + local.get $4 + call $~lib/rt/pure/__release + ) + (func $~lib/map/Map#set (; 133 ;) (type $FUNCSIG$vijj) (param $0 i32) (param $1 i64) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + local.get $1 + local.get $1 + call $~lib/util/hash/hash64 + local.tee $4 + call $~lib/map/Map#find + local.tee $3 + if + local.get $3 + local.get $2 + i64.store offset=8 + else + local.get $0 + i32.load offset=16 + local.get $0 + i32.load offset=12 + i32.eq + if + local.get $0 + local.get $0 + i32.load offset=20 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + local.get $0 + i32.load offset=4 + else + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/map/Map#rehash + end + local.get $0 + i32.load offset=8 + local.set $3 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $5 + i32.const 1 + i32.add + i32.store offset=16 + local.get $5 + i32.const 24 + i32.mul + local.get $3 + i32.add + local.tee $3 + local.get $1 + i64.store + local.get $3 + local.get $2 + i64.store offset=8 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + local.get $3 + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $4 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $0 + i32.load + i32.store offset=16 + local.get $0 + local.get $3 + i32.store + end + ) + (func $~lib/map/Map#delete (; 134 ;) (param $0 i32) (param $1 i64) + (local $2 i32) + (local $3 i32) + local.get $0 + local.get $1 + local.get $1 + call $~lib/util/hash/hash64 + call $~lib/map/Map#find + local.tee $2 + i32.eqz + if + return + end + local.get $2 + local.get $2 + i32.load offset=12 + i32.const 1 + i32.or + i32.store offset=12 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.sub + i32.store offset=20 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.tee $3 + i32.const 1 + i32.add + i32.const 4 + local.get $0 + i32.load offset=20 + local.tee $2 + i32.const 4 + local.get $2 + i32.gt_u + select + i32.ge_u + if (result i32) + local.get $0 + i32.load offset=20 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + else + i32.const 0 + end + if + local.get $0 + local.get $3 + call $~lib/map/Map#rehash + end + ) + (func $std/map/testNumeric (; 135 ;) (type $FUNCSIG$v) + (local $0 i64) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + call $~lib/map/Map#constructor + local.set $1 + loop $loop|0 + local.get $0 + i64.const 100 + i64.lt_s + if + local.get $1 + local.get $0 + call $~lib/map/Map#has + if + i32.const 0 + i32.const 376 + i32.const 6 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + local.get $0 + i32.wrap_i64 + i32.const 10 + i32.add + call $~lib/map/Map#set + local.get $1 + local.get $0 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 8 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/map/Map#get + local.get $0 + i32.wrap_i64 + i32.const 10 + i32.add + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 9 + i32.const 4 + call $~lib/builtins/abort + unreachable + else + local.get $0 + i64.const 1 + i64.add + local.set $0 + br $loop|0 + end + unreachable + end + end + local.get $1 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 11 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i64.const 0 + local.set $0 + loop $loop|1 + local.get $0 + i64.const 100 + i64.lt_s + if + local.get $1 + local.get $0 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 15 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/map/Map#get + local.get $0 + i32.wrap_i64 + i32.const 10 + i32.add + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 16 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + local.get $0 + i32.wrap_i64 + i32.const 20 + i32.add + call $~lib/map/Map#set + local.get $1 + local.get $0 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 18 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/map/Map#get + local.get $0 + i32.wrap_i64 + i32.const 20 + i32.add + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 19 + i32.const 4 + call $~lib/builtins/abort + unreachable + else + local.get $0 + i64.const 1 + i64.add + local.set $0 + br $loop|1 + end + unreachable + end + end + local.get $1 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 21 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/map/Map#keys + local.set $4 + local.get $1 + call $~lib/map/Map#values + local.set $7 + call $~lib/map/Map#constructor + local.set $5 + call $~lib/map/Map#constructor + local.set $6 + loop $loop|2 + local.get $2 + local.get $4 + i32.load offset=12 + i32.lt_s + if + local.get $4 + local.get $2 + call $~lib/array/Array#__get + local.set $0 + local.get $7 + local.get $2 + call $~lib/array/Array#__get + local.set $3 + local.get $1 + local.get $0 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 31 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $3 + i32.const 20 + i32.sub + i64.extend_i32_s + call $~lib/map/Map#has + if + local.get $5 + local.get $0 + local.get $0 + call $~lib/map/Map#set + local.get $6 + local.get $3 + i32.const 20 + i32.sub + local.tee $3 + local.get $3 + call $~lib/map/Map#set + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $loop|2 + else + i32.const 0 + i32.const 376 + i32.const 32 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + unreachable + end + end + local.get $5 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 36 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $6 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 37 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i64.const 0 + local.set $0 + loop $loop|3 + local.get $0 + i64.const 50 + i64.lt_s + if + local.get $1 + local.get $0 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 41 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/map/Map#get + local.get $0 + i32.wrap_i64 + i32.const 20 + i32.add + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 42 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/map/Map#delete + local.get $1 + local.get $0 + call $~lib/map/Map#has + if + i32.const 0 + i32.const 376 + i32.const 44 + i32.const 4 + call $~lib/builtins/abort + unreachable + else + local.get $0 + i64.const 1 + i64.add + local.set $0 + br $loop|3 + end + unreachable + end + end + local.get $1 + i32.load offset=20 + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 46 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i64.const 0 + local.set $0 + loop $loop|4 + local.get $0 + i64.const 50 + i64.lt_s + if + local.get $1 + local.get $0 + call $~lib/map/Map#has + if + i32.const 0 + i32.const 376 + i32.const 50 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + local.get $0 + i32.wrap_i64 + i32.const 10 + i32.add + call $~lib/map/Map#set + local.get $1 + local.get $0 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 52 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/map/Map#delete + local.get $1 + local.get $0 + call $~lib/map/Map#has + if + i32.const 0 + i32.const 376 + i32.const 54 + i32.const 4 + call $~lib/builtins/abort + unreachable + else + local.get $0 + i64.const 1 + i64.add + local.set $0 + br $loop|4 + end + unreachable + end + end + local.get $1 + i32.load offset=20 + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 56 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/map/Map#clear + local.get $1 + i32.load offset=20 + if + i32.const 0 + i32.const 376 + i32.const 60 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $4 + call $~lib/rt/pure/__release + local.get $7 + call $~lib/rt/pure/__release + local.get $5 + call $~lib/rt/pure/__release + local.get $6 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release + ) + (func $~lib/map/Map#constructor (; 136 ;) (result i32) + (local $0 i32) + i32.const 24 + i32.const 23 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.tee $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + local.get $0 + call $~lib/map/Map#clear + local.get $0 + ) + (func $~lib/map/Map#keys (; 137 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + i32.load offset=8 + local.set $4 + local.get $0 + i32.load offset=16 + local.set $2 + i32.const 16 + i32.const 24 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.get $2 + i32.const 3 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $1 + i32.const 0 + i32.store offset=12 + local.get $1 + local.get $2 + i32.store offset=12 + i32.const 0 + local.set $0 + loop $loop|0 + local.get $3 + local.get $2 + i32.lt_s + if + local.get $3 + i32.const 4 + i32.shl + local.get $4 + i32.add + local.tee $5 + i32.load offset=12 + i32.const 1 + i32.and + i32.eqz + if + local.get $1 + local.get $0 + local.get $5 + i64.load + call $~lib/array/Array#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $loop|0 + end + end + local.get $1 + local.get $0 + call $~lib/array/Array#set:length + local.get $1 + ) + (func $~lib/map/Map#constructor (; 138 ;) (result i32) + (local $0 i32) + i32.const 24 + i32.const 25 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.tee $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + local.get $0 + call $~lib/map/Map#clear + local.get $0 + ) + (func $std/map/testNumeric (; 139 ;) (type $FUNCSIG$v) + (local $0 i64) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + call $~lib/map/Map#constructor + local.set $1 + loop $loop|0 + local.get $0 + i64.const 100 + i64.lt_u + if + local.get $1 + local.get $0 + call $~lib/map/Map#has + if + i32.const 0 + i32.const 376 + i32.const 6 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + local.get $0 + i32.wrap_i64 + i32.const 10 + i32.add + call $~lib/map/Map#set + local.get $1 + local.get $0 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 8 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/map/Map#get + local.get $0 + i32.wrap_i64 + i32.const 10 + i32.add + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 9 + i32.const 4 + call $~lib/builtins/abort + unreachable + else + local.get $0 + i64.const 1 + i64.add + local.set $0 + br $loop|0 + end + unreachable + end + end + local.get $1 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 11 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i64.const 0 + local.set $0 + loop $loop|1 + local.get $0 + i64.const 100 + i64.lt_u + if + local.get $1 + local.get $0 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 15 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/map/Map#get + local.get $0 + i32.wrap_i64 + i32.const 10 + i32.add + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 16 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 local.get $0 i32.wrap_i64 i32.const 20 @@ -6594,54 +10503,148 @@ if i32.const 0 i32.const 376 - i32.const 18 + i32.const 18 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/map/Map#get + local.get $0 + i32.wrap_i64 + i32.const 20 + i32.add + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 19 + i32.const 4 + call $~lib/builtins/abort + unreachable + else + local.get $0 + i64.const 1 + i64.add + local.set $0 + br $loop|1 + end + unreachable + end + end + local.get $1 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 21 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/map/Map#keys + local.set $4 + local.get $1 + call $~lib/map/Map#values + local.set $7 + call $~lib/map/Map#constructor + local.set $5 + call $~lib/map/Map#constructor + local.set $6 + loop $loop|2 + local.get $2 + local.get $4 + i32.load offset=12 + i32.lt_s + if + local.get $4 + local.get $2 + call $~lib/array/Array#__get + local.set $0 + local.get $7 + local.get $2 + call $~lib/array/Array#__get + local.set $3 + local.get $1 + local.get $0 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 31 i32.const 4 call $~lib/builtins/abort unreachable end local.get $1 - local.get $0 - call $~lib/map/Map#get - local.get $0 - i32.wrap_i64 + local.get $3 i32.const 20 - i32.add - i32.ne + i32.sub + i64.extend_i32_s + call $~lib/map/Map#has if + local.get $5 + local.get $0 + local.get $0 + call $~lib/map/Map#set + local.get $6 + local.get $3 + i32.const 20 + i32.sub + local.tee $3 + local.get $3 + call $~lib/map/Map#set + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $loop|2 + else i32.const 0 i32.const 376 - i32.const 19 + i32.const 32 i32.const 4 call $~lib/builtins/abort unreachable - else - local.get $0 - i64.const 1 - i64.add - local.set $0 - br $loop|1 end unreachable end end - local.get $1 + local.get $5 i32.load offset=20 i32.const 100 i32.ne if i32.const 0 i32.const 376 - i32.const 21 + i32.const 36 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $6 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 37 i32.const 2 call $~lib/builtins/abort unreachable end i64.const 0 local.set $0 - loop $loop|2 + loop $loop|3 local.get $0 i64.const 50 - i64.lt_s + i64.lt_u if local.get $1 local.get $0 @@ -6650,7 +10653,7 @@ if i32.const 0 i32.const 376 - i32.const 25 + i32.const 41 i32.const 4 call $~lib/builtins/abort unreachable @@ -6666,7 +10669,7 @@ if i32.const 0 i32.const 376 - i32.const 26 + i32.const 42 i32.const 4 call $~lib/builtins/abort unreachable @@ -6680,7 +10683,7 @@ if i32.const 0 i32.const 376 - i32.const 28 + i32.const 44 i32.const 4 call $~lib/builtins/abort unreachable @@ -6689,7 +10692,7 @@ i64.const 1 i64.add local.set $0 - br $loop|2 + br $loop|3 end unreachable end @@ -6701,17 +10704,17 @@ if i32.const 0 i32.const 376 - i32.const 30 + i32.const 46 i32.const 2 call $~lib/builtins/abort unreachable end i64.const 0 local.set $0 - loop $loop|3 + loop $loop|4 local.get $0 i64.const 50 - i64.lt_s + i64.lt_u if local.get $1 local.get $0 @@ -6719,7 +10722,7 @@ if i32.const 0 i32.const 376 - i32.const 34 + i32.const 50 i32.const 4 call $~lib/builtins/abort unreachable @@ -6738,7 +10741,7 @@ if i32.const 0 i32.const 376 - i32.const 36 + i32.const 52 i32.const 4 call $~lib/builtins/abort unreachable @@ -6752,7 +10755,7 @@ if i32.const 0 i32.const 376 - i32.const 38 + i32.const 54 i32.const 4 call $~lib/builtins/abort unreachable @@ -6761,7 +10764,7 @@ i64.const 1 i64.add local.set $0 - br $loop|3 + br $loop|4 end unreachable end @@ -6773,7 +10776,7 @@ if i32.const 0 i32.const 376 - i32.const 40 + i32.const 56 i32.const 2 call $~lib/builtins/abort unreachable @@ -6785,18 +10788,26 @@ if i32.const 0 i32.const 376 - i32.const 44 + i32.const 60 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $4 + call $~lib/rt/pure/__release + local.get $7 + call $~lib/rt/pure/__release + local.get $5 + call $~lib/rt/pure/__release + local.get $6 + call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release ) - (func $~lib/map/Map#constructor (; 86 ;) (result i32) + (func $~lib/map/Map#constructor (; 140 ;) (result i32) (local $0 i32) i32.const 24 - i32.const 10 + i32.const 26 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain local.tee $0 @@ -6818,338 +10829,413 @@ i32.const 0 i32.store offset=20 local.get $0 - call $~lib/map/Map#clear + call $~lib/map/Map#clear local.get $0 ) - (func $std/map/testNumeric (; 87 ;) (type $FUNCSIG$v) - (local $0 i64) - (local $1 i32) - call $~lib/map/Map#constructor - local.set $1 - loop $loop|0 + (func $~lib/map/Map#find (; 141 ;) (type $FUNCSIG$iifi) (param $0 i32) (param $1 f32) (param $2 i32) (result i32) + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $2 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + loop $continue|0 local.get $0 - i64.const 100 - i64.lt_u if - local.get $1 - local.get $0 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 376 - i32.const 6 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - local.get $0 - i32.wrap_i64 - i32.const 10 - i32.add - call $~lib/map/Map#set - local.get $1 local.get $0 - call $~lib/map/Map#has - i32.eqz - if + i32.load offset=8 + i32.const 1 + i32.and + if (result i32) i32.const 0 - i32.const 376 - i32.const 8 - i32.const 4 - call $~lib/builtins/abort - unreachable + else + local.get $0 + f32.load + local.get $1 + f32.eq end - local.get $1 - local.get $0 - call $~lib/map/Map#get - local.get $0 - i32.wrap_i64 - i32.const 10 - i32.add - i32.ne if - i32.const 0 - i32.const 376 - i32.const 9 - i32.const 4 - call $~lib/builtins/abort - unreachable + local.get $0 + return else local.get $0 - i64.const 1 - i64.add + i32.load offset=8 + i32.const -2 + i32.and local.set $0 - br $loop|0 + br $continue|0 end unreachable end end + i32.const 0 + ) + (func $~lib/map/Map#has (; 142 ;) (type $FUNCSIG$iif) (param $0 i32) (param $1 f32) (result i32) + local.get $0 local.get $1 - i32.load offset=20 - i32.const 100 + local.get $1 + i32.reinterpret_f32 + call $~lib/util/hash/hash32 + call $~lib/map/Map#find + i32.const 0 i32.ne - if - i32.const 0 - i32.const 376 - i32.const 11 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i64.const 0 - local.set $0 - loop $loop|1 - local.get $0 - i64.const 100 - i64.lt_u - if - local.get $1 - local.get $0 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 15 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/map/Map#get - local.get $0 - i32.wrap_i64 - i32.const 10 - i32.add - i32.ne - if - i32.const 0 - i32.const 376 - i32.const 16 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - local.get $0 - i32.wrap_i64 - i32.const 20 - i32.add - call $~lib/map/Map#set - local.get $1 - local.get $0 - call $~lib/map/Map#has + ) + (func $~lib/map/Map#rehash (; 143 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $1 + i32.const 1 + i32.add + local.tee $4 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $5 + local.get $4 + i32.const 3 + i32.shl + i32.const 3 + i32.div_s + local.tee $6 + i32.const 12 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $4 + local.get $0 + i32.load offset=8 + local.tee $2 + local.get $0 + i32.load offset=16 + i32.const 12 + i32.mul + i32.add + local.set $7 + local.get $4 + local.set $3 + loop $continue|0 + local.get $2 + local.get $7 + i32.eq + i32.eqz + if + local.get $2 + i32.load offset=8 + i32.const 1 + i32.and i32.eqz if - i32.const 0 - i32.const 376 - i32.const 18 - i32.const 4 - call $~lib/builtins/abort - unreachable + local.get $3 + local.get $2 + f32.load + f32.store + local.get $3 + local.get $2 + i32.load offset=4 + i32.store offset=4 + local.get $3 + local.get $2 + f32.load + i32.reinterpret_f32 + call $~lib/util/hash/hash32 + local.get $1 + i32.and + i32.const 2 + i32.shl + local.get $5 + i32.add + local.tee $8 + i32.load + i32.store offset=8 + local.get $8 + local.get $3 + i32.store + local.get $3 + i32.const 12 + i32.add + local.set $3 end - local.get $1 - local.get $0 - call $~lib/map/Map#get - local.get $0 - i32.wrap_i64 - i32.const 20 + local.get $2 + i32.const 12 i32.add - i32.ne - if - i32.const 0 - i32.const 376 - i32.const 19 - i32.const 4 - call $~lib/builtins/abort - unreachable - else - local.get $0 - i64.const 1 - i64.add - local.set $0 - br $loop|1 - end - unreachable + local.set $2 + br $continue|0 end end + local.get $5 + local.tee $2 + local.get $0 + i32.load + local.tee $3 + i32.ne + if + local.get $2 + call $~lib/rt/pure/__retain + local.set $2 + local.get $3 + call $~lib/rt/pure/__release + end + local.get $0 + local.get $2 + i32.store + local.get $0 local.get $1 - i32.load offset=20 - i32.const 100 + i32.store offset=4 + local.get $4 + local.tee $1 + local.get $0 + i32.load offset=8 + local.tee $2 i32.ne if - i32.const 0 - i32.const 376 - i32.const 21 - i32.const 2 - call $~lib/builtins/abort - unreachable + local.get $1 + call $~lib/rt/pure/__retain + local.set $1 + local.get $2 + call $~lib/rt/pure/__release end - i64.const 0 - local.set $0 - loop $loop|2 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $0 + local.get $6 + i32.store offset=12 + local.get $0 + local.get $0 + i32.load offset=20 + i32.store offset=16 + local.get $5 + call $~lib/rt/pure/__release + local.get $4 + call $~lib/rt/pure/__release + ) + (func $~lib/map/Map#set (; 144 ;) (type $FUNCSIG$vifi) (param $0 i32) (param $1 f32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + local.get $1 + local.get $1 + i32.reinterpret_f32 + call $~lib/util/hash/hash32 + local.tee $4 + call $~lib/map/Map#find + local.tee $3 + if + local.get $3 + local.get $2 + i32.store offset=4 + else local.get $0 - i64.const 50 - i64.lt_u + i32.load offset=16 + local.get $0 + i32.load offset=12 + i32.eq if - local.get $1 - local.get $0 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 25 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 local.get $0 - call $~lib/map/Map#get - local.get $0 - i32.wrap_i64 - i32.const 20 - i32.add - i32.ne - if - i32.const 0 - i32.const 376 - i32.const 26 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 local.get $0 - call $~lib/map/Map#delete - local.get $1 + i32.load offset=20 local.get $0 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 376 - i32.const 28 - i32.const 4 - call $~lib/builtins/abort - unreachable + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + local.get $0 + i32.load offset=4 else local.get $0 - i64.const 1 - i64.add - local.set $0 - br $loop|2 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or end - unreachable + call $~lib/map/Map#rehash end + local.get $0 + i32.load offset=8 + local.set $3 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $5 + i32.const 1 + i32.add + i32.store offset=16 + local.get $5 + i32.const 12 + i32.mul + local.get $3 + i32.add + local.tee $3 + local.get $1 + f32.store + local.get $3 + local.get $2 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + local.get $3 + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $4 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $0 + i32.load + i32.store offset=8 + local.get $0 + local.get $3 + i32.store + end + ) + (func $~lib/map/Map#get (; 145 ;) (type $FUNCSIG$iif) (param $0 i32) (param $1 f32) (result i32) + local.get $0 + local.get $1 + local.get $1 + i32.reinterpret_f32 + call $~lib/util/hash/hash32 + call $~lib/map/Map#find + local.tee $0 + i32.eqz + if + i32.const 416 + i32.const 472 + i32.const 111 + i32.const 16 + call $~lib/builtins/abort + unreachable end + local.get $0 + i32.load offset=4 + ) + (func $~lib/array/Array#__set (; 146 ;) (type $FUNCSIG$viif) (param $0 i32) (param $1 i32) (param $2 f32) + (local $3 i32) local.get $1 - i32.load offset=20 - i32.const 50 - i32.ne + local.get $0 + i32.load offset=12 + i32.ge_u if + local.get $1 i32.const 0 - i32.const 376 - i32.const 30 + i32.lt_s + if + i32.const 280 + i32.const 512 + i32.const 109 + i32.const 21 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $3 i32.const 2 - call $~lib/builtins/abort - unreachable + call $~lib/array/ensureSize + local.get $0 + local.get $3 + i32.store offset=12 end - i64.const 0 + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $2 + f32.store + ) + (func $~lib/map/Map#keys (; 147 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + i32.load offset=8 + local.set $4 + local.get $0 + i32.load offset=16 + local.set $2 + i32.const 16 + i32.const 27 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.get $2 + i32.const 2 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $1 + i32.const 0 + i32.store offset=12 + local.get $1 + local.get $2 + i32.store offset=12 + i32.const 0 local.set $0 - loop $loop|3 - local.get $0 - i64.const 50 - i64.lt_u + loop $loop|0 + local.get $3 + local.get $2 + i32.lt_s if - local.get $1 - local.get $0 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 376 - i32.const 34 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - local.get $0 - i32.wrap_i64 - i32.const 10 + local.get $3 + i32.const 12 + i32.mul + local.get $4 i32.add - call $~lib/map/Map#set - local.get $1 - local.get $0 - call $~lib/map/Map#has + local.tee $5 + i32.load offset=8 + i32.const 1 + i32.and i32.eqz if - i32.const 0 - i32.const 376 - i32.const 36 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/map/Map#delete - local.get $1 - local.get $0 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 376 - i32.const 38 - i32.const 4 - call $~lib/builtins/abort - unreachable - else + local.get $1 local.get $0 - i64.const 1 - i64.add + local.get $5 + f32.load + call $~lib/array/Array#__set + local.get $0 + i32.const 1 + i32.add local.set $0 - br $loop|3 end - unreachable + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $loop|0 end end local.get $1 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 376 - i32.const 40 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/map/Map#clear - local.get $1 - i32.load offset=20 - if - i32.const 0 - i32.const 376 - i32.const 44 - i32.const 2 - call $~lib/builtins/abort - unreachable - end + local.get $0 + call $~lib/array/Array#set:length local.get $1 - call $~lib/rt/pure/__release ) - (func $~lib/map/Map#constructor (; 88 ;) (result i32) + (func $~lib/map/Map#constructor (; 148 ;) (result i32) (local $0 i32) i32.const 24 - i32.const 11 + i32.const 28 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain local.tee $0 @@ -7174,60 +11260,28 @@ call $~lib/map/Map#clear local.get $0 ) - (func $~lib/map/Map#find (; 89 ;) (type $FUNCSIG$iifi) (param $0 i32) (param $1 f32) (param $2 i32) (result i32) + (func $~lib/array/Array#__get (; 149 ;) (type $FUNCSIG$fii) (param $0 i32) (param $1 i32) (result f32) + local.get $1 local.get $0 - i32.load + i32.load offset=12 + i32.ge_u + if + i32.const 280 + i32.const 512 + i32.const 93 + i32.const 41 + call $~lib/builtins/abort + unreachable + end local.get $0 i32.load offset=4 - local.get $2 - i32.and + local.get $1 i32.const 2 i32.shl i32.add - i32.load - local.set $0 - loop $continue|0 - local.get $0 - if - local.get $0 - i32.load offset=8 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $0 - f32.load - local.get $1 - f32.eq - end - if - local.get $0 - return - else - local.get $0 - i32.load offset=8 - i32.const -2 - i32.and - local.set $0 - br $continue|0 - end - unreachable - end - end - i32.const 0 - ) - (func $~lib/map/Map#has (; 90 ;) (type $FUNCSIG$iif) (param $0 i32) (param $1 f32) (result i32) - local.get $0 - local.get $1 - local.get $1 - i32.reinterpret_f32 - call $~lib/util/hash/hash32 - call $~lib/map/Map#find - i32.const 0 - i32.ne + f32.load ) - (func $~lib/map/Map#rehash (; 91 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 150 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -7282,8 +11336,8 @@ f32.store local.get $3 local.get $2 - i32.load offset=4 - i32.store offset=4 + f32.load offset=4 + f32.store offset=4 local.get $3 local.get $2 f32.load @@ -7360,7 +11414,7 @@ local.get $4 call $~lib/rt/pure/__release ) - (func $~lib/map/Map#set (; 92 ;) (type $FUNCSIG$vifi) (param $0 i32) (param $1 f32) (param $2 i32) + (func $~lib/map/Map#set (; 151 ;) (type $FUNCSIG$viff) (param $0 i32) (param $1 f32) (param $2 f32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -7375,7 +11429,7 @@ if local.get $3 local.get $2 - i32.store offset=4 + f32.store offset=4 else local.get $0 i32.load offset=16 @@ -7404,7 +11458,7 @@ i32.const 1 i32.or end - call $~lib/map/Map#rehash + call $~lib/map/Map#rehash end local.get $0 i32.load offset=8 @@ -7426,7 +11480,7 @@ f32.store local.get $3 local.get $2 - i32.store offset=4 + f32.store offset=4 local.get $0 local.get $0 i32.load offset=20 @@ -7436,42 +11490,22 @@ local.get $3 local.get $0 i32.load - local.get $0 - i32.load offset=4 - local.get $4 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $0 - i32.load - i32.store offset=8 - local.get $0 - local.get $3 - i32.store - end - ) - (func $~lib/map/Map#get (; 93 ;) (type $FUNCSIG$iif) (param $0 i32) (param $1 f32) (result i32) - local.get $0 - local.get $1 - local.get $1 - i32.reinterpret_f32 - call $~lib/util/hash/hash32 - call $~lib/map/Map#find - local.tee $0 - i32.eqz - if - i32.const 416 - i32.const 472 - i32.const 111 - i32.const 16 - call $~lib/builtins/abort - unreachable + local.get $0 + i32.load offset=4 + local.get $4 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $0 + i32.load + i32.store offset=8 + local.get $0 + local.get $3 + i32.store end - local.get $0 - i32.load offset=4 ) - (func $~lib/map/Map#delete (; 94 ;) (param $0 i32) (param $1 f32) + (func $~lib/map/Map#delete (; 152 ;) (param $0 i32) (param $1 f32) (local $2 i32) (local $3 i32) local.get $0 @@ -7532,9 +11566,15 @@ call $~lib/map/Map#rehash end ) - (func $std/map/testNumeric (; 95 ;) (type $FUNCSIG$v) + (func $std/map/testNumeric (; 153 ;) (type $FUNCSIG$v) (local $0 f32) (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) call $~lib/map/Map#constructor local.set $1 loop $loop|0 @@ -7583,7 +11623,262 @@ if i32.const 0 i32.const 376 - i32.const 9 + i32.const 9 + i32.const 4 + call $~lib/builtins/abort + unreachable + else + local.get $0 + f32.const 1 + f32.add + local.set $0 + br $loop|0 + end + unreachable + end + end + local.get $1 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 11 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + local.set $0 + loop $loop|1 + local.get $0 + f32.const 100 + f32.lt + if + local.get $1 + local.get $0 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 15 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/map/Map#get + local.get $0 + i32.trunc_f32_s + i32.const 10 + i32.add + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 16 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + local.get $0 + i32.trunc_f32_s + i32.const 20 + i32.add + call $~lib/map/Map#set + local.get $1 + local.get $0 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 18 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/map/Map#get + local.get $0 + i32.trunc_f32_s + i32.const 20 + i32.add + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 19 + i32.const 4 + call $~lib/builtins/abort + unreachable + else + local.get $0 + f32.const 1 + f32.add + local.set $0 + br $loop|1 + end + unreachable + end + end + local.get $1 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 21 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/map/Map#keys + local.set $4 + local.get $1 + call $~lib/map/Map#values + local.set $7 + call $~lib/map/Map#constructor + local.set $5 + call $~lib/map/Map#constructor + local.set $6 + loop $loop|2 + local.get $2 + local.get $4 + i32.load offset=12 + i32.lt_s + if + local.get $4 + local.get $2 + call $~lib/array/Array#__get + local.set $0 + local.get $7 + local.get $2 + call $~lib/array/Array#__get + local.set $3 + local.get $1 + local.get $0 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 31 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $3 + i32.const 20 + i32.sub + f32.convert_i32_s + call $~lib/map/Map#has + if + local.get $5 + local.get $0 + local.get $0 + call $~lib/map/Map#set + local.get $6 + local.get $3 + i32.const 20 + i32.sub + local.tee $3 + local.get $3 + call $~lib/map/Map#set + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $loop|2 + else + i32.const 0 + i32.const 376 + i32.const 32 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + unreachable + end + end + local.get $5 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 36 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $6 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 37 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + local.set $0 + loop $loop|3 + local.get $0 + f32.const 50 + f32.lt + if + local.get $1 + local.get $0 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 41 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/map/Map#get + local.get $0 + i32.trunc_f32_s + i32.const 20 + i32.add + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 42 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/map/Map#delete + local.get $1 + local.get $0 + call $~lib/map/Map#has + if + i32.const 0 + i32.const 376 + i32.const 44 i32.const 4 call $~lib/builtins/abort unreachable @@ -7592,64 +11887,47 @@ f32.const 1 f32.add local.set $0 - br $loop|0 + br $loop|3 end unreachable end end local.get $1 i32.load offset=20 - i32.const 100 + i32.const 50 i32.ne if i32.const 0 i32.const 376 - i32.const 11 + i32.const 46 i32.const 2 call $~lib/builtins/abort unreachable end f32.const 0 local.set $0 - loop $loop|1 + loop $loop|4 local.get $0 - f32.const 100 + f32.const 50 f32.lt if local.get $1 local.get $0 call $~lib/map/Map#has - i32.eqz if i32.const 0 i32.const 376 - i32.const 15 + i32.const 50 i32.const 4 call $~lib/builtins/abort unreachable end local.get $1 local.get $0 - call $~lib/map/Map#get local.get $0 i32.trunc_f32_s i32.const 10 i32.add - i32.ne - if - i32.const 0 - i32.const 376 - i32.const 16 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - local.get $0 - i32.trunc_f32_s - i32.const 20 - i32.add call $~lib/map/Map#set local.get $1 local.get $0 @@ -7658,23 +11936,21 @@ if i32.const 0 i32.const 376 - i32.const 18 + i32.const 52 i32.const 4 call $~lib/builtins/abort unreachable end local.get $1 local.get $0 - call $~lib/map/Map#get + call $~lib/map/Map#delete + local.get $1 local.get $0 - i32.trunc_f32_s - i32.const 20 - i32.add - i32.ne + call $~lib/map/Map#has if i32.const 0 i32.const 376 - i32.const 19 + i32.const 54 i32.const 4 call $~lib/builtins/abort unreachable @@ -7683,184 +11959,478 @@ f32.const 1 f32.add local.set $0 - br $loop|1 + br $loop|4 + end + unreachable + end + end + local.get $1 + i32.load offset=20 + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 56 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/map/Map#clear + local.get $1 + i32.load offset=20 + if + i32.const 0 + i32.const 376 + i32.const 60 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $4 + call $~lib/rt/pure/__release + local.get $7 + call $~lib/rt/pure/__release + local.get $5 + call $~lib/rt/pure/__release + local.get $6 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release + ) + (func $~lib/map/Map#constructor (; 154 ;) (result i32) + (local $0 i32) + i32.const 24 + i32.const 29 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.tee $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + local.get $0 + call $~lib/map/Map#clear + local.get $0 + ) + (func $~lib/map/Map#find (; 155 ;) (type $FUNCSIG$iidi) (param $0 i32) (param $1 f64) (param $2 i32) (result i32) + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $2 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + loop $continue|0 + local.get $0 + if + local.get $0 + i32.load offset=12 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $0 + f64.load + local.get $1 + f64.eq + end + if + local.get $0 + return + else + local.get $0 + i32.load offset=12 + i32.const -2 + i32.and + local.set $0 + br $continue|0 end unreachable end end + i32.const 0 + ) + (func $~lib/map/Map#has (; 156 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) + local.get $0 + local.get $1 + local.get $1 + i64.reinterpret_f64 + call $~lib/util/hash/hash64 + call $~lib/map/Map#find + i32.const 0 + i32.ne + ) + (func $~lib/map/Map#rehash (; 157 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $1 + i32.const 1 + i32.add + local.tee $4 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $5 + local.get $4 + i32.const 3 + i32.shl + i32.const 3 + i32.div_s + local.tee $6 + i32.const 4 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $4 + local.get $0 + i32.load offset=8 + local.tee $2 + local.get $0 + i32.load offset=16 + i32.const 4 + i32.shl + i32.add + local.set $7 + local.get $4 + local.set $3 + loop $continue|0 + local.get $2 + local.get $7 + i32.eq + i32.eqz + if + local.get $2 + i32.load offset=12 + i32.const 1 + i32.and + i32.eqz + if + local.get $3 + local.get $2 + f64.load + f64.store + local.get $3 + local.get $2 + i32.load offset=8 + i32.store offset=8 + local.get $3 + local.get $2 + f64.load + i64.reinterpret_f64 + call $~lib/util/hash/hash64 + local.get $1 + i32.and + i32.const 2 + i32.shl + local.get $5 + i32.add + local.tee $8 + i32.load + i32.store offset=12 + local.get $8 + local.get $3 + i32.store + local.get $3 + i32.const 16 + i32.add + local.set $3 + end + local.get $2 + i32.const 16 + i32.add + local.set $2 + br $continue|0 + end + end + local.get $5 + local.tee $2 + local.get $0 + i32.load + local.tee $3 + i32.ne + if + local.get $2 + call $~lib/rt/pure/__retain + local.set $2 + local.get $3 + call $~lib/rt/pure/__release + end + local.get $0 + local.get $2 + i32.store + local.get $0 + local.get $1 + i32.store offset=4 + local.get $4 + local.tee $1 + local.get $0 + i32.load offset=8 + local.tee $2 + i32.ne + if + local.get $1 + call $~lib/rt/pure/__retain + local.set $1 + local.get $2 + call $~lib/rt/pure/__release + end + local.get $0 local.get $1 + i32.store offset=8 + local.get $0 + local.get $6 + i32.store offset=12 + local.get $0 + local.get $0 i32.load offset=20 - i32.const 100 - i32.ne + i32.store offset=16 + local.get $5 + call $~lib/rt/pure/__release + local.get $4 + call $~lib/rt/pure/__release + ) + (func $~lib/map/Map#set (; 158 ;) (type $FUNCSIG$vidi) (param $0 i32) (param $1 f64) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + local.get $1 + local.get $1 + i64.reinterpret_f64 + call $~lib/util/hash/hash64 + local.tee $4 + call $~lib/map/Map#find + local.tee $3 if - i32.const 0 - i32.const 376 - i32.const 21 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - local.set $0 - loop $loop|2 + local.get $3 + local.get $2 + i32.store offset=8 + else local.get $0 - f32.const 50 - f32.lt + i32.load offset=16 + local.get $0 + i32.load offset=12 + i32.eq if - local.get $1 - local.get $0 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 25 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/map/Map#get local.get $0 - i32.trunc_f32_s - i32.const 20 - i32.add - i32.ne - if - i32.const 0 - i32.const 376 - i32.const 26 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 local.get $0 - call $~lib/map/Map#delete - local.get $1 + i32.load offset=20 local.get $0 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 376 - i32.const 28 - i32.const 4 - call $~lib/builtins/abort - unreachable + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + local.get $0 + i32.load offset=4 else local.get $0 - f32.const 1 - f32.add - local.set $0 - br $loop|2 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or end - unreachable + call $~lib/map/Map#rehash end + local.get $0 + i32.load offset=8 + local.set $3 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $5 + i32.const 1 + i32.add + i32.store offset=16 + local.get $5 + i32.const 4 + i32.shl + local.get $3 + i32.add + local.tee $3 + local.get $1 + f64.store + local.get $3 + local.get $2 + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + local.get $3 + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $4 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $0 + i32.load + i32.store offset=12 + local.get $0 + local.get $3 + i32.store end + ) + (func $~lib/map/Map#get (; 159 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) + local.get $0 local.get $1 - i32.load offset=20 - i32.const 50 - i32.ne + local.get $1 + i64.reinterpret_f64 + call $~lib/util/hash/hash64 + call $~lib/map/Map#find + local.tee $0 + i32.eqz if - i32.const 0 - i32.const 376 - i32.const 30 - i32.const 2 + i32.const 416 + i32.const 472 + i32.const 111 + i32.const 16 call $~lib/builtins/abort unreachable end - f32.const 0 - local.set $0 - loop $loop|3 - local.get $0 - f32.const 50 - f32.lt + local.get $0 + i32.load offset=8 + ) + (func $~lib/array/Array#__set (; 160 ;) (type $FUNCSIG$viid) (param $0 i32) (param $1 i32) (param $2 f64) + (local $3 i32) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + local.get $1 + i32.const 0 + i32.lt_s if - local.get $1 - local.get $0 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 376 - i32.const 34 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - local.get $0 - i32.trunc_f32_s - i32.const 10 + i32.const 280 + i32.const 512 + i32.const 109 + i32.const 21 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $3 + i32.const 3 + call $~lib/array/ensureSize + local.get $0 + local.get $3 + i32.store offset=12 + end + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.get $2 + f64.store + ) + (func $~lib/map/Map#keys (; 161 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + i32.load offset=8 + local.set $4 + local.get $0 + i32.load offset=16 + local.set $2 + i32.const 16 + i32.const 30 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.get $2 + i32.const 3 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $1 + i32.const 0 + i32.store offset=12 + local.get $1 + local.get $2 + i32.store offset=12 + i32.const 0 + local.set $0 + loop $loop|0 + local.get $3 + local.get $2 + i32.lt_s + if + local.get $3 + i32.const 4 + i32.shl + local.get $4 i32.add - call $~lib/map/Map#set - local.get $1 - local.get $0 - call $~lib/map/Map#has + local.tee $5 + i32.load offset=12 + i32.const 1 + i32.and i32.eqz if - i32.const 0 - i32.const 376 - i32.const 36 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/map/Map#delete - local.get $1 - local.get $0 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 376 - i32.const 38 - i32.const 4 - call $~lib/builtins/abort - unreachable - else + local.get $1 local.get $0 - f32.const 1 - f32.add + local.get $5 + f64.load + call $~lib/array/Array#__set + local.get $0 + i32.const 1 + i32.add local.set $0 - br $loop|3 end - unreachable + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $loop|0 end end local.get $1 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 376 - i32.const 40 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/map/Map#clear - local.get $1 - i32.load offset=20 - if - i32.const 0 - i32.const 376 - i32.const 44 - i32.const 2 - call $~lib/builtins/abort - unreachable - end + local.get $0 + call $~lib/array/Array#set:length local.get $1 - call $~lib/rt/pure/__release ) - (func $~lib/map/Map#constructor (; 96 ;) (result i32) + (func $~lib/map/Map#constructor (; 162 ;) (result i32) (local $0 i32) i32.const 24 - i32.const 12 + i32.const 31 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain local.tee $0 @@ -7882,10 +12452,31 @@ i32.const 0 i32.store offset=20 local.get $0 - call $~lib/map/Map#clear + call $~lib/map/Map#clear + local.get $0 + ) + (func $~lib/array/Array#__get (; 163 ;) (type $FUNCSIG$dii) (param $0 i32) (param $1 i32) (result f64) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 280 + i32.const 512 + i32.const 93 + i32.const 41 + call $~lib/builtins/abort + unreachable + end local.get $0 + i32.load offset=4 + local.get $1 + i32.const 3 + i32.shl + i32.add + f64.load ) - (func $~lib/map/Map#find (; 97 ;) (type $FUNCSIG$iidi) (param $0 i32) (param $1 f64) (param $2 i32) (result i32) + (func $~lib/map/Map#find (; 164 ;) (type $FUNCSIG$iidi) (param $0 i32) (param $1 f64) (param $2 i32) (result i32) local.get $0 i32.load local.get $0 @@ -7901,7 +12492,7 @@ local.get $0 if local.get $0 - i32.load offset=12 + i32.load offset=16 i32.const 1 i32.and if (result i32) @@ -7917,7 +12508,7 @@ return else local.get $0 - i32.load offset=12 + i32.load offset=16 i32.const -2 i32.and local.set $0 @@ -7928,17 +12519,7 @@ end i32.const 0 ) - (func $~lib/map/Map#has (; 98 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) - local.get $0 - local.get $1 - local.get $1 - i64.reinterpret_f64 - call $~lib/util/hash/hash64 - call $~lib/map/Map#find - i32.const 0 - i32.ne - ) - (func $~lib/map/Map#rehash (; 99 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 165 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -7960,8 +12541,8 @@ i32.const 3 i32.div_s local.tee $6 - i32.const 4 - i32.shl + i32.const 24 + i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor local.set $4 local.get $0 @@ -7969,8 +12550,8 @@ local.tee $2 local.get $0 i32.load offset=16 - i32.const 4 - i32.shl + i32.const 24 + i32.mul i32.add local.set $7 local.get $4 @@ -7982,7 +12563,7 @@ i32.eqz if local.get $2 - i32.load offset=12 + i32.load offset=16 i32.const 1 i32.and i32.eqz @@ -7993,8 +12574,8 @@ f64.store local.get $3 local.get $2 - i32.load offset=8 - i32.store offset=8 + f64.load offset=8 + f64.store offset=8 local.get $3 local.get $2 f64.load @@ -8008,17 +12589,17 @@ i32.add local.tee $8 i32.load - i32.store offset=12 + i32.store offset=16 local.get $8 local.get $3 i32.store local.get $3 - i32.const 16 + i32.const 24 i32.add local.set $3 end local.get $2 - i32.const 16 + i32.const 24 i32.add local.set $2 br $continue|0 @@ -8071,7 +12652,7 @@ local.get $4 call $~lib/rt/pure/__release ) - (func $~lib/map/Map#set (; 100 ;) (type $FUNCSIG$vidi) (param $0 i32) (param $1 f64) (param $2 i32) + (func $~lib/map/Map#set (; 166 ;) (type $FUNCSIG$vidd) (param $0 i32) (param $1 f64) (param $2 f64) (local $3 i32) (local $4 i32) (local $5 i32) @@ -8081,12 +12662,12 @@ i64.reinterpret_f64 call $~lib/util/hash/hash64 local.tee $4 - call $~lib/map/Map#find + call $~lib/map/Map#find local.tee $3 if local.get $3 local.get $2 - i32.store offset=8 + f64.store offset=8 else local.get $0 i32.load offset=16 @@ -8115,7 +12696,7 @@ i32.const 1 i32.or end - call $~lib/map/Map#rehash + call $~lib/map/Map#rehash end local.get $0 i32.load offset=8 @@ -8128,8 +12709,8 @@ i32.add i32.store offset=16 local.get $5 - i32.const 4 - i32.shl + i32.const 24 + i32.mul local.get $3 i32.add local.tee $3 @@ -8137,7 +12718,7 @@ f64.store local.get $3 local.get $2 - i32.store offset=8 + f64.store offset=8 local.get $0 local.get $0 i32.load offset=20 @@ -8156,33 +12737,13 @@ i32.add local.tee $0 i32.load - i32.store offset=12 + i32.store offset=16 local.get $0 local.get $3 i32.store end ) - (func $~lib/map/Map#get (; 101 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) - local.get $0 - local.get $1 - local.get $1 - i64.reinterpret_f64 - call $~lib/util/hash/hash64 - call $~lib/map/Map#find - local.tee $0 - i32.eqz - if - i32.const 416 - i32.const 472 - i32.const 111 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=8 - ) - (func $~lib/map/Map#delete (; 102 ;) (param $0 i32) (param $1 f64) + (func $~lib/map/Map#delete (; 167 ;) (param $0 i32) (param $1 f64) (local $2 i32) (local $3 i32) local.get $0 @@ -8243,9 +12804,15 @@ call $~lib/map/Map#rehash end ) - (func $std/map/testNumeric (; 103 ;) (type $FUNCSIG$v) + (func $std/map/testNumeric (; 168 ;) (type $FUNCSIG$v) (local $0 f64) (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) call $~lib/map/Map#constructor local.set $1 loop $loop|0 @@ -8411,9 +12978,103 @@ call $~lib/builtins/abort unreachable end + local.get $1 + call $~lib/map/Map#keys + local.set $4 + local.get $1 + call $~lib/map/Map#values + local.set $7 + call $~lib/map/Map#constructor + local.set $5 + call $~lib/map/Map#constructor + local.set $6 + loop $loop|2 + local.get $2 + local.get $4 + i32.load offset=12 + i32.lt_s + if + local.get $4 + local.get $2 + call $~lib/array/Array#__get + local.set $0 + local.get $7 + local.get $2 + call $~lib/array/Array#__get + local.set $3 + local.get $1 + local.get $0 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 31 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $3 + i32.const 20 + i32.sub + f64.convert_i32_s + call $~lib/map/Map#has + if + local.get $5 + local.get $0 + local.get $0 + call $~lib/map/Map#set + local.get $6 + local.get $3 + i32.const 20 + i32.sub + local.tee $3 + local.get $3 + call $~lib/map/Map#set + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $loop|2 + else + i32.const 0 + i32.const 376 + i32.const 32 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + unreachable + end + end + local.get $5 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 36 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $6 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 37 + i32.const 2 + call $~lib/builtins/abort + unreachable + end f64.const 0 local.set $0 - loop $loop|2 + loop $loop|3 local.get $0 f64.const 50 f64.lt @@ -8425,7 +13086,7 @@ if i32.const 0 i32.const 376 - i32.const 25 + i32.const 41 i32.const 4 call $~lib/builtins/abort unreachable @@ -8441,7 +13102,7 @@ if i32.const 0 i32.const 376 - i32.const 26 + i32.const 42 i32.const 4 call $~lib/builtins/abort unreachable @@ -8455,7 +13116,7 @@ if i32.const 0 i32.const 376 - i32.const 28 + i32.const 44 i32.const 4 call $~lib/builtins/abort unreachable @@ -8464,7 +13125,7 @@ f64.const 1 f64.add local.set $0 - br $loop|2 + br $loop|3 end unreachable end @@ -8476,14 +13137,14 @@ if i32.const 0 i32.const 376 - i32.const 30 + i32.const 46 i32.const 2 call $~lib/builtins/abort unreachable end f64.const 0 local.set $0 - loop $loop|3 + loop $loop|4 local.get $0 f64.const 50 f64.lt @@ -8494,7 +13155,7 @@ if i32.const 0 i32.const 376 - i32.const 34 + i32.const 50 i32.const 4 call $~lib/builtins/abort unreachable @@ -8513,7 +13174,7 @@ if i32.const 0 i32.const 376 - i32.const 36 + i32.const 52 i32.const 4 call $~lib/builtins/abort unreachable @@ -8527,7 +13188,7 @@ if i32.const 0 i32.const 376 - i32.const 38 + i32.const 54 i32.const 4 call $~lib/builtins/abort unreachable @@ -8536,7 +13197,7 @@ f64.const 1 f64.add local.set $0 - br $loop|3 + br $loop|4 end unreachable end @@ -8548,7 +13209,7 @@ if i32.const 0 i32.const 376 - i32.const 40 + i32.const 56 i32.const 2 call $~lib/builtins/abort unreachable @@ -8560,15 +13221,23 @@ if i32.const 0 i32.const 376 - i32.const 44 + i32.const 60 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $4 + call $~lib/rt/pure/__release + local.get $7 + call $~lib/rt/pure/__release + local.get $5 + call $~lib/rt/pure/__release + local.get $6 + call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release ) - (func $start (; 104 ;) (type $FUNCSIG$v) + (func $start (; 169 ;) (type $FUNCSIG$v) call $std/map/testNumeric call $std/map/testNumeric call $std/map/testNumeric @@ -8580,9 +13249,9 @@ call $std/map/testNumeric call $std/map/testNumeric ) - (func $~lib/rt/pure/__visit (; 105 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/pure/__visit (; 170 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) local.get $0 - i32.const 604 + i32.const 804 i32.lt_u if return @@ -8690,30 +13359,30 @@ unreachable end ) - (func $~lib/rt/__visit_members (; 106 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/__visit_members (; 171 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) block $folding-inner0 - block $switch$1$default - block $switch$1$case$4 + block $block$4$break + block $switch$1$default block $switch$1$case$2 local.get $0 i32.const 8 i32.sub i32.load - br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $switch$1$default + br_table $switch$1$case$2 $switch$1$case$2 $block$4$break $folding-inner0 $block$4$break $block$4$break $folding-inner0 $folding-inner0 $folding-inner0 $block$4$break $folding-inner0 $folding-inner0 $block$4$break $folding-inner0 $folding-inner0 $block$4$break $folding-inner0 $folding-inner0 $block$4$break $folding-inner0 $folding-inner0 $block$4$break $folding-inner0 $folding-inner0 $block$4$break $folding-inner0 $folding-inner0 $block$4$break $folding-inner0 $folding-inner0 $block$4$break $folding-inner0 $switch$1$default end return end + unreachable + end + local.get $0 + i32.load + local.tee $0 + if local.get $0 - i32.load - local.tee $0 - if - local.get $0 - local.get $1 - call $~lib/rt/pure/__visit - end - return + local.get $1 + call $~lib/rt/pure/__visit end - unreachable + return end local.get $0 i32.load @@ -8724,7 +13393,7 @@ local.get $1 call $~lib/rt/pure/__visit ) - (func $null (; 107 ;) (type $FUNCSIG$v) + (func $null (; 172 ;) (type $FUNCSIG$v) unreachable ) ) diff --git a/tests/compiler/std/map.ts b/tests/compiler/std/map.ts index e52698755e..4feaa40c45 100644 --- a/tests/compiler/std/map.ts +++ b/tests/compiler/std/map.ts @@ -20,6 +20,22 @@ function testNumeric(): void { } assert(map.size == 100); + // keys and values + let keys = map.keys(); + let vals = map.values(); + let keyMap = new Map(); + let valMap = new Map(); + for (let index = 0; index < keys.length; ++index) { + let key = keys[index]; + let value = vals[index]; + assert(map.has(key)); + assert(map.has((value - 20))); + keyMap.set(key, key); + valMap.set((value - 20), (value - 20)); + } + assert(keyMap.size == 100); + assert(valMap.size == 100); + // delete for (let k: K = 0; k < 50; ++k) { assert(map.has(k)); diff --git a/tests/compiler/std/map.untouched.wat b/tests/compiler/std/map.untouched.wat index 8e8ecd4891..31638a560f 100644 --- a/tests/compiler/std/map.untouched.wat +++ b/tests/compiler/std/map.untouched.wat @@ -11,12 +11,21 @@ (type $FUNCSIG$ij (func (param i64) (result i32))) (type $FUNCSIG$iiji (func (param i32 i64 i32) (result i32))) (type $FUNCSIG$viji (func (param i32 i64 i32))) + (type $FUNCSIG$viij (func (param i32 i32 i64))) + (type $FUNCSIG$jii (func (param i32 i32) (result i64))) + (type $FUNCSIG$vijj (func (param i32 i64 i64))) (type $FUNCSIG$iif (func (param i32 f32) (result i32))) (type $FUNCSIG$iifi (func (param i32 f32 i32) (result i32))) (type $FUNCSIG$vifi (func (param i32 f32 i32))) + (type $FUNCSIG$viif (func (param i32 i32 f32))) + (type $FUNCSIG$fii (func (param i32 i32) (result f32))) + (type $FUNCSIG$viff (func (param i32 f32 f32))) (type $FUNCSIG$iid (func (param i32 f64) (result i32))) (type $FUNCSIG$iidi (func (param i32 f64 i32) (result i32))) (type $FUNCSIG$vidi (func (param i32 f64 i32))) + (type $FUNCSIG$viid (func (param i32 i32 f64))) + (type $FUNCSIG$dii (func (param i32 i32) (result f64))) + (type $FUNCSIG$vidd (func (param i32 f64 f64))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (import "rtrace" "onfree" (func $~lib/rt/rtrace/onfree (param i32))) (import "rtrace" "onalloc" (func $~lib/rt/rtrace/onalloc (param i32))) @@ -33,7 +42,8 @@ (data (i32.const 360) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00s\00t\00d\00/\00m\00a\00p\00.\00t\00s\00") (data (i32.const 400) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00K\00e\00y\00 \00d\00o\00e\00s\00 \00n\00o\00t\00 \00e\00x\00i\00s\00t\00") (data (i32.const 456) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00~\00l\00i\00b\00/\00m\00a\00p\00.\00t\00s\00") - (data (i32.const 496) "\0d\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\98D\08\00\00\00\00\00\98D\00\00\00\00\00\00\98\84\08\00\00\00\00\00\98\84\00\00\00\00\00\00\98\04\t\00\00\00\00\00\98\04\01\00\00\00\00\00\98\04\n\00\00\00\00\00\98\04\02\00\00\00\00\00\98\04\19\00\00\00\00\00\98\04\1a\00\00\00\00\00") + (data (i32.const 496) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00") + (data (i32.const 544) " \00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\98D\08\00\00\00\00\003\04\00\00\02\00\00\00\93\04\00\00\02\00\00\008D\08\00\00\00\00\00\98\04\t\00\00\00\00\00\98D\00\00\00\00\00\003\00\00\00\02\00\00\008@\00\00\00\00\00\00\98\84\08\00\00\00\00\00S\04\00\00\02\00\00\00X\84\08\00\00\00\00\00\98\84\00\00\00\00\00\00S\00\00\00\02\00\00\00X\80\00\00\00\00\00\00\98\04\01\00\00\00\00\00\93\00\00\00\02\00\00\00\98\00\01\00\00\00\00\00\98\04\n\00\00\00\00\00\13\05\00\00\02\00\00\00\18\05\n\00\00\00\00\00\98\04\02\00\00\00\00\00\13\01\00\00\02\00\00\00\18\01\02\00\00\00\00\00\98\04\19\00\00\00\00\00\93\0c\00\00\02\00\00\00\98\0c\19\00\00\00\00\00\98\04\1a\00\00\00\00\00\13\0d\00\00\02\00\00\00\18\0d\1a\00\00\00\00\00") (table $0 1 funcref) (elem (i32.const 0) $null) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) @@ -43,8 +53,8 @@ (global $~lib/rt/pure/CUR (mut i32) (i32.const 0)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $~lib/rt/pure/END (mut i32) (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 496)) - (global $~lib/heap/__heap_base i32 (i32.const 604)) + (global $~lib/rt/__rtti_base i32 (i32.const 544)) + (global $~lib/heap/__heap_base i32 (i32.const 804)) (export "memory" (memory $0)) (start $start) (func $~lib/rt/tlsf/removeBlock (; 5 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) @@ -4015,502 +4025,632 @@ local.get $0 i32.load offset=20 ) - (func $~lib/map/Map#delete (; 42 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/arraybuffer/ArrayBufferView#constructor (; 42 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) - local.get $0 + (local $6 i32) local.get $1 - block $~lib/util/hash/HASH|inlined.4 (result i32) - local.get $1 - local.set $2 - local.get $2 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - call $~lib/util/hash/hash8 - br $~lib/util/hash/HASH|inlined.4 + i32.const 1073741808 + local.get $2 + i32.shr_u + i32.gt_u + if + i32.const 176 + i32.const 224 + i32.const 23 + i32.const 56 + call $~lib/builtins/abort + unreachable end - call $~lib/map/Map#find + local.get $1 + local.get $2 + i32.shl + local.tee $1 + i32.const 0 + call $~lib/rt/tlsf/__alloc local.set $3 local.get $3 + i32.const 0 + local.get $1 + call $~lib/memory/memory.fill + local.get $0 i32.eqz if - i32.const 0 - return + i32.const 12 + i32.const 2 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.set $0 end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + local.tee $4 local.get $3 + local.tee $5 + local.get $4 + i32.load + local.tee $6 + i32.ne + if + local.get $5 + call $~lib/rt/pure/__retain + local.set $5 + local.get $6 + call $~lib/rt/pure/__release + end + local.get $5 + i32.store + local.get $0 local.get $3 - i32.load offset=8 - i32.const 1 - i32.or + i32.store offset=4 + local.get $0 + local.get $1 i32.store offset=8 local.get $0 + ) + (func $~lib/array/Array#constructor (; 43 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 + if (result i32) + local.get $0 + else + i32.const 16 + i32.const 4 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + end + local.get $1 + i32.const 0 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.set $0 local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u + i32.const 0 + i32.store offset=12 + local.get $0 + local.get $1 + i32.store offset=12 + local.get $0 + ) + (func $~lib/rt/tlsf/reallocateBlock (; 44 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $2 + call $~lib/rt/tlsf/prepareSize + local.set $3 + local.get $1 + i32.load local.set $4 local.get $4 i32.const 1 - i32.add - i32.const 4 - local.tee $2 - local.get $0 - i32.load offset=20 - local.tee $5 - local.get $2 - local.get $5 - i32.gt_u - select - i32.ge_u + i32.and + i32.eqz if (result i32) - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s + local.get $1 + i32.load offset=4 + i32.const -268435456 + i32.and + i32.eqz else i32.const 0 end + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 521 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $4 + i32.const -4 + i32.and + i32.le_u if local.get $0 - local.get $4 - call $~lib/map/Map#rehash + local.get $1 + local.get $3 + call $~lib/rt/tlsf/prepareBlock + local.get $1 + local.get $2 + i32.store offset=12 + local.get $1 + return end + local.get $1 + local.set $5 + local.get $5 + i32.const 16 + i32.add + local.get $5 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.set $6 + local.get $6 + i32.load + local.set $7 + local.get $7 i32.const 1 - ) - (func $std/map/testNumeric (; 43 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 i32) - i32.const 0 - call $~lib/map/Map#constructor - local.set $0 - block $break|0 - i32.const 0 - local.set $1 - loop $loop|0 - local.get $1 - i32.const 100 - i32.lt_s - i32.eqz - br_if $break|0 - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 6 - i32.const 4 - call $~lib/builtins/abort - unreachable - end + i32.and + if + local.get $4 + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.add + local.get $7 + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.set $5 + local.get $5 + local.get $3 + i32.ge_u + if local.get $0 + local.get $6 + call $~lib/rt/tlsf/removeBlock local.get $1 - i32.const 10 - local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.add - call $~lib/map/Map#set - local.get $0 + local.get $4 + i32.const 3 + i32.and + local.get $5 + i32.or + i32.store local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 8 - i32.const 4 - call $~lib/builtins/abort - unreachable - end + local.get $2 + i32.store offset=12 local.get $0 local.get $1 - call $~lib/map/Map#get - i32.const 10 + local.get $3 + call $~lib/rt/tlsf/prepareBlock local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 9 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $loop|0 + return end - unreachable end local.get $0 - call $~lib/map/Map#get:size - i32.const 100 - i32.eq + local.get $2 + call $~lib/rt/tlsf/allocateBlock + local.set $8 + local.get $8 + local.get $1 + i32.load offset=8 + i32.store offset=8 + local.get $8 + i32.const 16 + i32.add + local.get $1 + i32.const 16 + i32.add + local.get $2 + call $~lib/memory/memory.copy + local.get $1 + local.get $4 + i32.const 1 + i32.or + i32.store + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + local.get $1 + call $~lib/rt/rtrace/onfree + local.get $8 + ) + (func $~lib/rt/tlsf/__realloc (; 45 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/rt/tlsf/ROOT i32.eqz if i32.const 0 - i32.const 376 - i32.const 11 - i32.const 2 + i32.const 24 + i32.const 585 + i32.const 13 call $~lib/builtins/abort unreachable end - block $break|1 + local.get $0 + i32.const 0 + i32.ne + if (result i32) + local.get $0 + i32.const 15 + i32.and + i32.eqz + else i32.const 0 - local.set $1 - loop $loop|1 - local.get $1 - i32.const 100 - i32.lt_s - i32.eqz - br_if $break|1 - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 15 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 10 - local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 16 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 20 - local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.add - call $~lib/map/Map#set - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 18 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 20 - local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 19 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $loop|1 - end - unreachable end - local.get $0 - call $~lib/map/Map#get:size - i32.const 100 - i32.eq i32.eqz if i32.const 0 - i32.const 376 - i32.const 21 + i32.const 24 + i32.const 586 i32.const 2 call $~lib/builtins/abort unreachable end - block $break|2 + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 16 + i32.sub + local.get $1 + call $~lib/rt/tlsf/reallocateBlock + i32.const 16 + i32.add + ) + (func $~lib/array/ensureSize (; 46 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.load offset=8 + local.set $3 + local.get $1 + local.get $3 + local.get $2 + i32.shr_u + i32.gt_u + if + local.get $1 + i32.const 1073741808 + local.get $2 + i32.shr_u + i32.gt_u + if + i32.const 176 + i32.const 512 + i32.const 14 + i32.const 47 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load + local.set $4 + local.get $1 + local.get $2 + i32.shl + local.set $5 + local.get $4 + local.get $5 + call $~lib/rt/tlsf/__realloc + local.set $6 + local.get $6 + local.get $3 + i32.add i32.const 0 - local.set $1 - loop $loop|2 - local.get $1 - i32.const 50 - i32.lt_s - i32.eqz - br_if $break|2 - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 25 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 20 - local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 26 - i32.const 4 - call $~lib/builtins/abort - unreachable - end + local.get $5 + local.get $3 + i32.sub + call $~lib/memory/memory.fill + local.get $6 + local.get $4 + i32.ne + if local.get $0 - local.get $1 - call $~lib/map/Map#delete - drop + local.get $6 + call $~lib/rt/pure/__retain + i32.store local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 28 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $loop|2 + local.get $6 + i32.store offset=4 end - unreachable + local.get $0 + local.get $5 + i32.store offset=8 end + ) + (func $~lib/array/Array#__unchecked_set (; 47 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $0 - call $~lib/map/Map#get:size - i32.const 50 - i32.eq - i32.eqz + i32.load offset=4 + local.get $1 + i32.const 0 + i32.shl + i32.add + local.get $2 + i32.store8 + ) + (func $~lib/array/Array#__set (; 48 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u if + local.get $1 i32.const 0 - i32.const 376 - i32.const 30 - i32.const 2 - call $~lib/builtins/abort - unreachable + i32.lt_s + if + i32.const 280 + i32.const 512 + i32.const 109 + i32.const 21 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.const 0 + call $~lib/array/ensureSize + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.store offset=12 end - block $break|3 + local.get $0 + local.get $1 + local.get $2 + call $~lib/array/Array#__unchecked_set + ) + (func $~lib/array/Array#set:length (; 49 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + i32.load offset=12 + local.set $2 + local.get $0 + local.get $1 + i32.const 0 + call $~lib/array/ensureSize + local.get $0 + local.get $1 + i32.store offset=12 + ) + (func $~lib/map/Map#keys (; 50 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.load offset=8 + local.set $1 + local.get $0 + i32.load offset=16 + local.set $2 + i32.const 0 + local.get $2 + call $~lib/array/Array#constructor + local.set $3 + i32.const 0 + local.set $4 + block $break|0 i32.const 0 - local.set $1 - loop $loop|3 - local.get $1 - i32.const 50 + local.set $5 + loop $loop|0 + local.get $5 + local.get $2 i32.lt_s i32.eqz - br_if $break|3 - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 34 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 10 + br_if $break|0 local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + local.get $5 + i32.const 12 + i32.mul i32.add - call $~lib/map/Map#set - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 36 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#delete - drop - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz + local.set $6 + local.get $6 + i32.load offset=8 + i32.const 1 + i32.and i32.eqz if - i32.const 0 - i32.const 376 - i32.const 38 - i32.const 4 - call $~lib/builtins/abort - unreachable + local.get $3 + local.get $4 + local.get $6 + i32.load8_s + call $~lib/array/Array#__set + local.get $4 + i32.const 1 + i32.add + local.set $4 end - local.get $1 + local.get $5 i32.const 1 i32.add - local.set $1 - br $loop|3 + local.set $5 + br $loop|0 end unreachable end + local.get $3 + local.get $4 + call $~lib/array/Array#set:length + local.get $3 + ) + (func $~lib/array/Array#constructor (; 51 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 - call $~lib/map/Map#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 40 - i32.const 2 - call $~lib/builtins/abort - unreachable + if (result i32) + local.get $0 + else + i32.const 16 + i32.const 5 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain end + local.get $1 + i32.const 2 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.set $0 local.get $0 - call $~lib/map/Map#clear - local.get $0 - call $~lib/map/Map#get:size i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 44 - i32.const 2 - call $~lib/builtins/abort - unreachable - end + i32.store offset=12 + local.get $0 + local.get $1 + i32.store offset=12 local.get $0 - call $~lib/rt/pure/__release ) - (func $~lib/map/Map#clear (; 44 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) + (func $~lib/array/Array#push (; 52 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) local.get $0 - local.tee $1 - i32.const 0 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor + i32.load offset=12 local.set $2 - local.get $1 - i32.load - call $~lib/rt/pure/__release local.get $2 - i32.store - local.get $0 - i32.const 4 i32.const 1 - i32.sub - i32.store offset=4 + i32.add + local.set $3 local.get $0 - local.tee $1 - i32.const 0 - i32.const 48 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $2 - local.get $1 - i32.load offset=8 - call $~lib/rt/pure/__release + local.get $3 + i32.const 2 + call $~lib/array/ensureSize + local.get $0 + i32.load offset=4 local.get $2 - i32.store offset=8 + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store local.get $0 - i32.const 4 + local.get $3 i32.store offset=12 + local.get $3 + ) + (func $~lib/array/Array#set:length (; 53 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) local.get $0 - i32.const 0 - i32.store offset=16 + i32.load offset=12 + local.set $2 local.get $0 - i32.const 0 - i32.store offset=20 - ) - (func $~lib/map/Map#constructor (; 45 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $1 + i32.const 2 + call $~lib/array/ensureSize local.get $0 - i32.eqz - if - i32.const 24 - i32.const 4 + local.get $1 + i32.store offset=12 + ) + (func $~lib/map/Map#values (; 54 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.load offset=8 + local.set $1 + local.get $0 + i32.load offset=16 + local.set $2 + i32.const 0 + local.get $2 + call $~lib/array/Array#constructor + local.set $3 + i32.const 0 + local.set $4 + block $break|0 + i32.const 0 + local.set $5 + loop $loop|0 + local.get $5 + local.get $2 + i32.lt_s + i32.eqz + br_if $break|0 + local.get $1 + local.get $5 + i32.const 12 + i32.mul + i32.add + local.set $6 + local.get $6 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $3 + local.get $6 + i32.load offset=4 + call $~lib/array/Array#push + drop + local.get $4 + i32.const 1 + i32.add + local.set $4 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $loop|0 + end + unreachable + end + local.get $3 + local.get $4 + call $~lib/array/Array#set:length + local.get $3 + ) + (func $~lib/map/Map#clear (; 55 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + local.tee $1 + i32.const 0 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $2 + local.get $1 + i32.load + call $~lib/rt/pure/__release + local.get $2 + i32.store + local.get $0 + i32.const 4 + i32.const 1 + i32.sub + i32.store offset=4 + local.get $0 + local.tee $1 + i32.const 0 + i32.const 32 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $2 + local.get $1 + i32.load offset=8 + call $~lib/rt/pure/__release + local.get $2 + i32.store offset=8 + local.get $0 + i32.const 4 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + ) + (func $~lib/map/Map#constructor (; 56 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.eqz + if + i32.const 24 + i32.const 6 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain local.set $0 @@ -4534,10 +4674,144 @@ i32.const 0 i32.store offset=20 local.get $0 - call $~lib/map/Map#clear + call $~lib/map/Map#clear + local.get $0 + ) + (func $~lib/map/Map#clear (; 57 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + local.tee $1 + i32.const 0 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $2 + local.get $1 + i32.load + call $~lib/rt/pure/__release + local.get $2 + i32.store + local.get $0 + i32.const 4 + i32.const 1 + i32.sub + i32.store offset=4 + local.get $0 + local.tee $1 + i32.const 0 + i32.const 48 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $2 + local.get $1 + i32.load offset=8 + call $~lib/rt/pure/__release + local.get $2 + i32.store offset=8 + local.get $0 + i32.const 4 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + ) + (func $~lib/map/Map#constructor (; 58 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.eqz + if + i32.const 24 + i32.const 7 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.set $0 + end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + local.get $0 + call $~lib/map/Map#clear + local.get $0 + ) + (func $~lib/array/Array#get:length (; 59 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=12 + ) + (func $~lib/array/Array#__unchecked_get (; 60 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 0 + i32.shl + i32.add + i32.load8_s + ) + (func $~lib/array/Array#__get (; 61 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 280 + i32.const 512 + i32.const 93 + i32.const 41 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/array/Array#__unchecked_get + local.set $2 + local.get $2 + ) + (func $~lib/array/Array#__unchecked_get (; 62 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + ) + (func $~lib/array/Array#__get (; 63 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 280 + i32.const 512 + i32.const 93 + i32.const 41 + call $~lib/builtins/abort + unreachable + end local.get $0 + local.get $1 + call $~lib/array/Array#__unchecked_get + local.set $2 + local.get $2 ) - (func $~lib/map/Map#find (; 46 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/map/Map#find (; 64 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $0 i32.load @@ -4556,16 +4830,18 @@ i32.eqz br_if $break|0 local.get $3 - i32.load offset=8 + i32.load offset=4 i32.const 1 i32.and i32.eqz if (result i32) local.get $3 - i32.load8_u + i32.load8_s local.get $1 - i32.const 255 - i32.and + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s i32.eq else i32.const 0 @@ -4575,7 +4851,7 @@ return end local.get $3 - i32.load offset=8 + i32.load offset=4 i32.const 1 i32.const -1 i32.xor @@ -4587,24 +4863,7 @@ end i32.const 0 ) - (func $~lib/map/Map#has (; 47 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.0 (result i32) - local.get $1 - local.set $2 - local.get $2 - i32.const 255 - i32.and - call $~lib/util/hash/hash8 - br $~lib/util/hash/HASH|inlined.0 - end - call $~lib/map/Map#find - i32.const 0 - i32.ne - ) - (func $~lib/map/Map#rehash (; 48 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 65 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -4634,7 +4893,7 @@ local.set $4 i32.const 0 local.get $4 - i32.const 12 + i32.const 8 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor local.set $5 @@ -4644,7 +4903,7 @@ local.get $6 local.get $0 i32.load offset=16 - i32.const 12 + i32.const 8 i32.mul i32.add local.set $7 @@ -4660,7 +4919,7 @@ local.get $6 local.set $9 local.get $9 - i32.load offset=8 + i32.load offset=4 i32.const 1 i32.and i32.eqz @@ -4669,19 +4928,19 @@ local.set $10 local.get $10 local.get $9 - i32.load8_u + i32.load8_s i32.store8 local.get $10 local.get $9 - i32.load offset=4 - i32.store offset=4 - block $~lib/util/hash/HASH|inlined.2 (result i32) + i32.load8_s offset=1 + i32.store8 offset=1 + block $~lib/util/hash/HASH|inlined.5 (result i32) local.get $9 - i32.load8_u + i32.load8_s local.set $11 local.get $11 call $~lib/util/hash/hash8 - br $~lib/util/hash/HASH|inlined.2 + br $~lib/util/hash/HASH|inlined.5 end local.get $1 i32.and @@ -4695,17 +4954,17 @@ local.get $10 local.get $12 i32.load - i32.store offset=8 + i32.store offset=4 local.get $12 local.get $8 i32.store local.get $8 - i32.const 12 + i32.const 8 i32.add local.set $8 end local.get $6 - i32.const 12 + i32.const 8 i32.add local.set $6 br $continue|0 @@ -4761,31 +5020,33 @@ local.get $5 call $~lib/rt/pure/__release ) - (func $~lib/map/Map#set (; 49 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/map/Map#set (; 66 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) - block $~lib/util/hash/HASH|inlined.1 (result i32) + block $~lib/util/hash/HASH|inlined.4 (result i32) local.get $1 local.set $3 local.get $3 - i32.const 255 - i32.and + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s call $~lib/util/hash/hash8 - br $~lib/util/hash/HASH|inlined.1 + br $~lib/util/hash/HASH|inlined.4 end local.set $4 local.get $0 local.get $1 local.get $4 - call $~lib/map/Map#find + call $~lib/map/Map#find local.set $5 local.get $5 if local.get $5 local.get $2 - i32.store offset=4 + i32.store8 offset=1 else local.get $0 i32.load offset=16 @@ -4814,7 +5075,7 @@ i32.const 1 i32.or end - call $~lib/map/Map#rehash + call $~lib/map/Map#rehash end local.get $0 i32.load offset=8 @@ -4829,7 +5090,7 @@ i32.add i32.store offset=16 local.get $6 - i32.const 12 + i32.const 8 i32.mul i32.add local.set $5 @@ -4838,7 +5099,7 @@ i32.store8 local.get $5 local.get $2 - i32.store offset=4 + i32.store8 offset=1 local.get $0 local.get $0 i32.load offset=20 @@ -4858,7 +5119,7 @@ local.get $5 local.get $6 i32.load - i32.store offset=8 + i32.store offset=4 local.get $6 local.get $5 i32.store @@ -4866,194 +5127,7763 @@ call $~lib/rt/pure/__release end ) - (func $~lib/map/Map#get (; 50 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) + (func $~lib/util/hash/hash32 (; 67 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + i32.const -2128831035 + local.set $1 + local.get $1 local.get $0 + i32.const 255 + i32.and + i32.xor + i32.const 16777619 + i32.mul + local.set $1 local.get $1 - block $~lib/util/hash/HASH|inlined.3 (result i32) - local.get $1 - local.set $2 - local.get $2 - i32.const 255 - i32.and - call $~lib/util/hash/hash8 - br $~lib/util/hash/HASH|inlined.3 - end - call $~lib/map/Map#find - local.set $3 - local.get $3 - i32.eqz - if - i32.const 416 - i32.const 472 - i32.const 111 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.load offset=4 - ) - (func $~lib/map/Map#get:size (; 51 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - i32.load offset=20 - ) - (func $~lib/map/Map#delete (; 52 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) + i32.const 8 + i32.shr_u + i32.const 255 + i32.and + i32.xor + i32.const 16777619 + i32.mul + local.set $1 + local.get $1 local.get $0 + i32.const 16 + i32.shr_u + i32.const 255 + i32.and + i32.xor + i32.const 16777619 + i32.mul + local.set $1 local.get $1 - block $~lib/util/hash/HASH|inlined.4 (result i32) - local.get $1 - local.set $2 - local.get $2 - i32.const 255 - i32.and - call $~lib/util/hash/hash8 - br $~lib/util/hash/HASH|inlined.4 - end - call $~lib/map/Map#find - local.set $3 - local.get $3 - i32.eqz - if - i32.const 0 - return - end - local.get $3 - local.get $3 - i32.load offset=8 - i32.const 1 - i32.or - i32.store offset=8 local.get $0 + i32.const 24 + i32.shr_u + i32.xor + i32.const 16777619 + i32.mul + local.set $1 + local.get $1 + ) + (func $~lib/map/Map#find (; 68 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 + i32.load + local.get $2 local.get $0 i32.load offset=4 - i32.const 1 - i32.shr_u - local.set $4 - local.get $4 - i32.const 1 - i32.add + i32.and i32.const 4 - local.tee $2 - local.get $0 - i32.load offset=20 - local.tee $5 - local.get $2 - local.get $5 - i32.gt_u - select - i32.ge_u - if (result i32) - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - else - i32.const 0 - end - if - local.get $0 - local.get $4 - call $~lib/map/Map#rehash - end - i32.const 1 - ) - (func $std/map/testNumeric (; 53 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 i32) - i32.const 0 - call $~lib/map/Map#constructor - local.set $0 + i32.mul + i32.add + i32.load + local.set $3 block $break|0 - i32.const 0 - local.set $1 - loop $loop|0 - local.get $1 - i32.const 100 - i32.lt_u + loop $continue|0 + local.get $3 i32.eqz br_if $break|0 - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 6 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 10 - local.get $1 - i32.const 255 + local.get $3 + i32.load offset=8 + i32.const 1 i32.and - i32.add - call $~lib/map/Map#set - local.get $0 - local.get $1 - call $~lib/map/Map#has i32.eqz - if + if (result i32) + local.get $3 + i32.load + local.get $1 + i32.eq + else i32.const 0 - i32.const 376 - i32.const 8 - i32.const 4 - call $~lib/builtins/abort - unreachable end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 10 - local.get $1 - i32.const 255 - i32.and - i32.add - i32.eq - i32.eqz if - i32.const 0 - i32.const 376 - i32.const 9 - i32.const 4 - call $~lib/builtins/abort - unreachable + local.get $3 + return end - local.get $1 + local.get $3 + i32.load offset=8 i32.const 1 - i32.add - local.set $1 - br $loop|0 + i32.const -1 + i32.xor + i32.and + local.set $3 + br $continue|0 end unreachable end - local.get $0 - call $~lib/map/Map#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 + i32.const 0 + ) + (func $~lib/map/Map#rehash (; 69 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + local.get $1 + i32.const 1 + i32.add + local.set $2 + i32.const 0 + local.get $2 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $3 + local.get $2 + i32.const 8 + i32.mul + i32.const 3 + i32.div_s + local.set $4 + i32.const 0 + local.get $4 + i32.const 12 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $5 + local.get $0 + i32.load offset=8 + local.set $6 + local.get $6 + local.get $0 + i32.load offset=16 + i32.const 12 + i32.mul + i32.add + local.set $7 + local.get $5 + local.set $8 + block $break|0 + loop $continue|0 + local.get $6 + local.get $7 + i32.ne + i32.eqz + br_if $break|0 + local.get $6 + local.set $9 + local.get $9 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $8 + local.set $10 + local.get $10 + local.get $9 + i32.load + i32.store + local.get $10 + local.get $9 + i32.load offset=4 + i32.store offset=4 + block $~lib/util/hash/HASH|inlined.1 (result i32) + local.get $9 + i32.load + local.set $11 + local.get $11 + call $~lib/util/hash/hash32 + br $~lib/util/hash/HASH|inlined.1 + end + local.get $1 + i32.and + local.set $11 + local.get $3 + local.get $11 + i32.const 4 + i32.mul + i32.add + local.set $12 + local.get $10 + local.get $12 + i32.load + i32.store offset=8 + local.get $12 + local.get $8 + i32.store + local.get $8 + i32.const 12 + i32.add + local.set $8 + end + local.get $6 + i32.const 12 + i32.add + local.set $6 + br $continue|0 + end + unreachable + end + local.get $0 + local.tee $9 + local.get $3 + local.tee $10 + local.get $9 + i32.load + local.tee $12 + i32.ne + if + local.get $10 + call $~lib/rt/pure/__retain + local.set $10 + local.get $12 + call $~lib/rt/pure/__release + end + local.get $10 + i32.store + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + local.tee $9 + local.get $5 + local.tee $11 + local.get $9 + i32.load offset=8 + local.tee $10 + i32.ne + if + local.get $11 + call $~lib/rt/pure/__retain + local.set $11 + local.get $10 + call $~lib/rt/pure/__release + end + local.get $11 + i32.store offset=8 + local.get $0 + local.get $4 + i32.store offset=12 + local.get $0 + local.get $0 + i32.load offset=20 + i32.store offset=16 + local.get $3 + call $~lib/rt/pure/__release + local.get $5 + call $~lib/rt/pure/__release + ) + (func $~lib/map/Map#set (; 70 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + block $~lib/util/hash/HASH|inlined.0 (result i32) + local.get $1 + local.set $3 + local.get $3 + call $~lib/util/hash/hash32 + br $~lib/util/hash/HASH|inlined.0 + end + local.set $4 + local.get $0 + local.get $1 + local.get $4 + call $~lib/map/Map#find + local.set $5 + local.get $5 + if + local.get $5 + local.get $2 + i32.store offset=4 + else + local.get $0 + i32.load offset=16 + local.get $0 + i32.load offset=12 + i32.eq + if + local.get $0 + local.get $0 + i32.load offset=20 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + local.get $0 + i32.load offset=4 + else + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/map/Map#rehash + end + local.get $0 + i32.load offset=8 + call $~lib/rt/pure/__retain + local.set $3 + local.get $3 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $6 + i32.const 1 + i32.add + i32.store offset=16 + local.get $6 + i32.const 12 + i32.mul + i32.add + local.set $5 + local.get $5 + local.get $1 + i32.store + local.get $5 + local.get $2 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + local.get $0 + i32.load + local.get $4 + local.get $0 + i32.load offset=4 + i32.and + i32.const 4 + i32.mul + i32.add + local.set $6 + local.get $5 + local.get $6 + i32.load + i32.store offset=8 + local.get $6 + local.get $5 + i32.store + local.get $3 + call $~lib/rt/pure/__release + end + ) + (func $~lib/map/Map#get:size (; 71 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=20 + ) + (func $~lib/map/Map#get:size (; 72 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=20 + ) + (func $~lib/map/Map#delete (; 73 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + local.get $1 + block $~lib/util/hash/HASH|inlined.6 (result i32) + local.get $1 + local.set $2 + local.get $2 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + call $~lib/util/hash/hash8 + br $~lib/util/hash/HASH|inlined.6 + end + call $~lib/map/Map#find + local.set $3 + local.get $3 + i32.eqz + if + i32.const 0 + return + end + local.get $3 + local.get $3 + i32.load offset=8 + i32.const 1 + i32.or + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.sub + i32.store offset=20 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.set $4 + local.get $4 + i32.const 1 + i32.add + i32.const 4 + local.tee $2 + local.get $0 + i32.load offset=20 + local.tee $5 + local.get $2 + local.get $5 + i32.gt_u + select + i32.ge_u + if (result i32) + local.get $0 + i32.load offset=20 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + else + i32.const 0 + end + if + local.get $0 + local.get $4 + call $~lib/map/Map#rehash + end + i32.const 1 + ) + (func $std/map/testNumeric (; 74 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + i32.const 0 + call $~lib/map/Map#constructor + local.set $0 + block $break|0 + i32.const 0 + local.set $1 + loop $loop|0 + local.get $1 + i32.const 100 + i32.lt_s + i32.eqz + br_if $break|0 + local.get $0 + local.get $1 + call $~lib/map/Map#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 6 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 10 + local.get $1 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.add + call $~lib/map/Map#set + local.get $0 + local.get $1 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 8 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/map/Map#get + i32.const 10 + local.get $1 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 9 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $loop|0 + end + unreachable + end + local.get $0 + call $~lib/map/Map#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 11 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + block $break|1 + i32.const 0 + local.set $1 + loop $loop|1 + local.get $1 + i32.const 100 + i32.lt_s + i32.eqz + br_if $break|1 + local.get $0 + local.get $1 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 15 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/map/Map#get + i32.const 10 + local.get $1 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 16 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 20 + local.get $1 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.add + call $~lib/map/Map#set + local.get $0 + local.get $1 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 18 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/map/Map#get + i32.const 20 + local.get $1 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 19 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $loop|1 + end + unreachable + end + local.get $0 + call $~lib/map/Map#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 21 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/map/Map#keys + local.set $1 + local.get $0 + call $~lib/map/Map#values + local.set $2 + i32.const 0 + call $~lib/map/Map#constructor + local.set $3 + i32.const 0 + call $~lib/map/Map#constructor + local.set $4 + block $break|2 + i32.const 0 + local.set $5 + loop $loop|2 + local.get $5 + local.get $1 + call $~lib/array/Array#get:length + i32.lt_s + i32.eqz + br_if $break|2 + local.get $1 + local.get $5 + call $~lib/array/Array#__get + local.set $6 + local.get $2 + local.get $5 + call $~lib/array/Array#__get + local.set $7 + local.get $0 + local.get $6 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 31 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $7 + i32.const 20 + i32.sub + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 32 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $6 + local.get $6 + call $~lib/map/Map#set + local.get $4 + local.get $7 + i32.const 20 + i32.sub + local.get $7 + i32.const 20 + i32.sub + call $~lib/map/Map#set + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $loop|2 + end + unreachable + end + local.get $3 + call $~lib/map/Map#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 36 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $4 + call $~lib/map/Map#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 37 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + block $break|3 + i32.const 0 + local.set $5 + loop $loop|3 + local.get $5 + i32.const 50 + i32.lt_s + i32.eqz + br_if $break|3 + local.get $0 + local.get $5 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 41 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + call $~lib/map/Map#get + i32.const 20 + local.get $5 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 42 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + call $~lib/map/Map#delete + drop + local.get $0 + local.get $5 + call $~lib/map/Map#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 44 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $loop|3 + end + unreachable + end + local.get $0 + call $~lib/map/Map#get:size + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 46 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + block $break|4 + i32.const 0 + local.set $5 + loop $loop|4 + local.get $5 + i32.const 50 + i32.lt_s + i32.eqz + br_if $break|4 + local.get $0 + local.get $5 + call $~lib/map/Map#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 50 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 10 + local.get $5 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.add + call $~lib/map/Map#set + local.get $0 + local.get $5 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 52 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + call $~lib/map/Map#delete + drop + local.get $0 + local.get $5 + call $~lib/map/Map#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 54 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $loop|4 + end + unreachable + end + local.get $0 + call $~lib/map/Map#get:size + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 56 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/map/Map#clear + local.get $0 + call $~lib/map/Map#get:size + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 60 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/rt/pure/__release + local.get $2 + call $~lib/rt/pure/__release + local.get $3 + call $~lib/rt/pure/__release + local.get $4 + call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release + ) + (func $~lib/map/Map#clear (; 75 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + local.tee $1 + i32.const 0 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $2 + local.get $1 + i32.load + call $~lib/rt/pure/__release + local.get $2 + i32.store + local.get $0 + i32.const 4 + i32.const 1 + i32.sub + i32.store offset=4 + local.get $0 + local.tee $1 + i32.const 0 + i32.const 48 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $2 + local.get $1 + i32.load offset=8 + call $~lib/rt/pure/__release + local.get $2 + i32.store offset=8 + local.get $0 + i32.const 4 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + ) + (func $~lib/map/Map#constructor (; 76 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.eqz + if + i32.const 24 + i32.const 8 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.set $0 + end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + local.get $0 + call $~lib/map/Map#clear + local.get $0 + ) + (func $~lib/map/Map#find (; 77 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $0 + i32.load + local.get $2 + local.get $0 + i32.load offset=4 + i32.and + i32.const 4 + i32.mul + i32.add + i32.load + local.set $3 + block $break|0 + loop $continue|0 + local.get $3 + i32.eqz + br_if $break|0 + local.get $3 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if (result i32) + local.get $3 + i32.load8_u + local.get $1 + i32.const 255 + i32.and + i32.eq + else + i32.const 0 + end + if + local.get $3 + return + end + local.get $3 + i32.load offset=8 + i32.const 1 + i32.const -1 + i32.xor + i32.and + local.set $3 + br $continue|0 + end + unreachable + end + i32.const 0 + ) + (func $~lib/map/Map#has (; 78 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $0 + local.get $1 + block $~lib/util/hash/HASH|inlined.0 (result i32) + local.get $1 + local.set $2 + local.get $2 + i32.const 255 + i32.and + call $~lib/util/hash/hash8 + br $~lib/util/hash/HASH|inlined.0 + end + call $~lib/map/Map#find + i32.const 0 + i32.ne + ) + (func $~lib/map/Map#rehash (; 79 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + local.get $1 + i32.const 1 + i32.add + local.set $2 + i32.const 0 + local.get $2 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $3 + local.get $2 + i32.const 8 + i32.mul + i32.const 3 + i32.div_s + local.set $4 + i32.const 0 + local.get $4 + i32.const 12 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $5 + local.get $0 + i32.load offset=8 + local.set $6 + local.get $6 + local.get $0 + i32.load offset=16 + i32.const 12 + i32.mul + i32.add + local.set $7 + local.get $5 + local.set $8 + block $break|0 + loop $continue|0 + local.get $6 + local.get $7 + i32.ne + i32.eqz + br_if $break|0 + local.get $6 + local.set $9 + local.get $9 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $8 + local.set $10 + local.get $10 + local.get $9 + i32.load8_u + i32.store8 + local.get $10 + local.get $9 + i32.load offset=4 + i32.store offset=4 + block $~lib/util/hash/HASH|inlined.2 (result i32) + local.get $9 + i32.load8_u + local.set $11 + local.get $11 + call $~lib/util/hash/hash8 + br $~lib/util/hash/HASH|inlined.2 + end + local.get $1 + i32.and + local.set $11 + local.get $3 + local.get $11 + i32.const 4 + i32.mul + i32.add + local.set $12 + local.get $10 + local.get $12 + i32.load + i32.store offset=8 + local.get $12 + local.get $8 + i32.store + local.get $8 + i32.const 12 + i32.add + local.set $8 + end + local.get $6 + i32.const 12 + i32.add + local.set $6 + br $continue|0 + end + unreachable + end + local.get $0 + local.tee $9 + local.get $3 + local.tee $10 + local.get $9 + i32.load + local.tee $12 + i32.ne + if + local.get $10 + call $~lib/rt/pure/__retain + local.set $10 + local.get $12 + call $~lib/rt/pure/__release + end + local.get $10 + i32.store + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + local.tee $9 + local.get $5 + local.tee $11 + local.get $9 + i32.load offset=8 + local.tee $10 + i32.ne + if + local.get $11 + call $~lib/rt/pure/__retain + local.set $11 + local.get $10 + call $~lib/rt/pure/__release + end + local.get $11 + i32.store offset=8 + local.get $0 + local.get $4 + i32.store offset=12 + local.get $0 + local.get $0 + i32.load offset=20 + i32.store offset=16 + local.get $3 + call $~lib/rt/pure/__release + local.get $5 + call $~lib/rt/pure/__release + ) + (func $~lib/map/Map#set (; 80 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + block $~lib/util/hash/HASH|inlined.1 (result i32) + local.get $1 + local.set $3 + local.get $3 + i32.const 255 + i32.and + call $~lib/util/hash/hash8 + br $~lib/util/hash/HASH|inlined.1 + end + local.set $4 + local.get $0 + local.get $1 + local.get $4 + call $~lib/map/Map#find + local.set $5 + local.get $5 + if + local.get $5 + local.get $2 + i32.store offset=4 + else + local.get $0 + i32.load offset=16 + local.get $0 + i32.load offset=12 + i32.eq + if + local.get $0 + local.get $0 + i32.load offset=20 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + local.get $0 + i32.load offset=4 + else + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/map/Map#rehash + end + local.get $0 + i32.load offset=8 + call $~lib/rt/pure/__retain + local.set $3 + local.get $3 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $6 + i32.const 1 + i32.add + i32.store offset=16 + local.get $6 + i32.const 12 + i32.mul + i32.add + local.set $5 + local.get $5 + local.get $1 + i32.store8 + local.get $5 + local.get $2 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + local.get $0 + i32.load + local.get $4 + local.get $0 + i32.load offset=4 + i32.and + i32.const 4 + i32.mul + i32.add + local.set $6 + local.get $5 + local.get $6 + i32.load + i32.store offset=8 + local.get $6 + local.get $5 + i32.store + local.get $3 + call $~lib/rt/pure/__release + end + ) + (func $~lib/map/Map#get (; 81 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + local.get $1 + block $~lib/util/hash/HASH|inlined.3 (result i32) + local.get $1 + local.set $2 + local.get $2 + i32.const 255 + i32.and + call $~lib/util/hash/hash8 + br $~lib/util/hash/HASH|inlined.3 + end + call $~lib/map/Map#find + local.set $3 + local.get $3 + i32.eqz + if + i32.const 416 + i32.const 472 + i32.const 111 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.load offset=4 + ) + (func $~lib/map/Map#get:size (; 82 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=20 + ) + (func $~lib/array/Array#constructor (; 83 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + if (result i32) + local.get $0 + else + i32.const 16 + i32.const 9 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + end + local.get $1 + i32.const 0 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.set $0 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + local.get $1 + i32.store offset=12 + local.get $0 + ) + (func $~lib/array/Array#__unchecked_set (; 84 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 0 + i32.shl + i32.add + local.get $2 + i32.store8 + ) + (func $~lib/array/Array#__set (; 85 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + local.get $1 + i32.const 0 + i32.lt_s + if + i32.const 280 + i32.const 512 + i32.const 109 + i32.const 21 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.const 0 + call $~lib/array/ensureSize + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.store offset=12 + end + local.get $0 + local.get $1 + local.get $2 + call $~lib/array/Array#__unchecked_set + ) + (func $~lib/array/Array#set:length (; 86 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + i32.load offset=12 + local.set $2 + local.get $0 + local.get $1 + i32.const 0 + call $~lib/array/ensureSize + local.get $0 + local.get $1 + i32.store offset=12 + ) + (func $~lib/map/Map#keys (; 87 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.load offset=8 + local.set $1 + local.get $0 + i32.load offset=16 + local.set $2 + i32.const 0 + local.get $2 + call $~lib/array/Array#constructor + local.set $3 + i32.const 0 + local.set $4 + block $break|0 + i32.const 0 + local.set $5 + loop $loop|0 + local.get $5 + local.get $2 + i32.lt_s + i32.eqz + br_if $break|0 + local.get $1 + local.get $5 + i32.const 12 + i32.mul + i32.add + local.set $6 + local.get $6 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $3 + local.get $4 + local.get $6 + i32.load8_u + call $~lib/array/Array#__set + local.get $4 + i32.const 1 + i32.add + local.set $4 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $loop|0 + end + unreachable + end + local.get $3 + local.get $4 + call $~lib/array/Array#set:length + local.get $3 + ) + (func $~lib/map/Map#values (; 88 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.load offset=8 + local.set $1 + local.get $0 + i32.load offset=16 + local.set $2 + i32.const 0 + local.get $2 + call $~lib/array/Array#constructor + local.set $3 + i32.const 0 + local.set $4 + block $break|0 + i32.const 0 + local.set $5 + loop $loop|0 + local.get $5 + local.get $2 + i32.lt_s + i32.eqz + br_if $break|0 + local.get $1 + local.get $5 + i32.const 12 + i32.mul + i32.add + local.set $6 + local.get $6 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $3 + local.get $6 + i32.load offset=4 + call $~lib/array/Array#push + drop + local.get $4 + i32.const 1 + i32.add + local.set $4 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $loop|0 + end + unreachable + end + local.get $3 + local.get $4 + call $~lib/array/Array#set:length + local.get $3 + ) + (func $~lib/map/Map#clear (; 89 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + local.tee $1 + i32.const 0 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $2 + local.get $1 + i32.load + call $~lib/rt/pure/__release + local.get $2 + i32.store + local.get $0 + i32.const 4 + i32.const 1 + i32.sub + i32.store offset=4 + local.get $0 + local.tee $1 + i32.const 0 + i32.const 32 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $2 + local.get $1 + i32.load offset=8 + call $~lib/rt/pure/__release + local.get $2 + i32.store offset=8 + local.get $0 + i32.const 4 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + ) + (func $~lib/map/Map#constructor (; 90 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.eqz + if + i32.const 24 + i32.const 10 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.set $0 + end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + local.get $0 + call $~lib/map/Map#clear + local.get $0 + ) + (func $~lib/array/Array#get:length (; 91 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=12 + ) + (func $~lib/array/Array#__unchecked_get (; 92 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 0 + i32.shl + i32.add + i32.load8_u + ) + (func $~lib/array/Array#__get (; 93 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 280 + i32.const 512 + i32.const 93 + i32.const 41 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/array/Array#__unchecked_get + local.set $2 + local.get $2 + ) + (func $~lib/map/Map#find (; 94 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $0 + i32.load + local.get $2 + local.get $0 + i32.load offset=4 + i32.and + i32.const 4 + i32.mul + i32.add + i32.load + local.set $3 + block $break|0 + loop $continue|0 + local.get $3 + i32.eqz + br_if $break|0 + local.get $3 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz + if (result i32) + local.get $3 + i32.load8_u + local.get $1 + i32.const 255 + i32.and + i32.eq + else + i32.const 0 + end + if + local.get $3 + return + end + local.get $3 + i32.load offset=4 + i32.const 1 + i32.const -1 + i32.xor + i32.and + local.set $3 + br $continue|0 + end + unreachable + end + i32.const 0 + ) + (func $~lib/map/Map#rehash (; 95 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + local.get $1 + i32.const 1 + i32.add + local.set $2 + i32.const 0 + local.get $2 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $3 + local.get $2 + i32.const 8 + i32.mul + i32.const 3 + i32.div_s + local.set $4 + i32.const 0 + local.get $4 + i32.const 8 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $5 + local.get $0 + i32.load offset=8 + local.set $6 + local.get $6 + local.get $0 + i32.load offset=16 + i32.const 8 + i32.mul + i32.add + local.set $7 + local.get $5 + local.set $8 + block $break|0 + loop $continue|0 + local.get $6 + local.get $7 + i32.ne + i32.eqz + br_if $break|0 + local.get $6 + local.set $9 + local.get $9 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz + if + local.get $8 + local.set $10 + local.get $10 + local.get $9 + i32.load8_u + i32.store8 + local.get $10 + local.get $9 + i32.load8_u offset=1 + i32.store8 offset=1 + block $~lib/util/hash/HASH|inlined.5 (result i32) + local.get $9 + i32.load8_u + local.set $11 + local.get $11 + call $~lib/util/hash/hash8 + br $~lib/util/hash/HASH|inlined.5 + end + local.get $1 + i32.and + local.set $11 + local.get $3 + local.get $11 + i32.const 4 + i32.mul + i32.add + local.set $12 + local.get $10 + local.get $12 + i32.load + i32.store offset=4 + local.get $12 + local.get $8 + i32.store + local.get $8 + i32.const 8 + i32.add + local.set $8 + end + local.get $6 + i32.const 8 + i32.add + local.set $6 + br $continue|0 + end + unreachable + end + local.get $0 + local.tee $9 + local.get $3 + local.tee $10 + local.get $9 + i32.load + local.tee $12 + i32.ne + if + local.get $10 + call $~lib/rt/pure/__retain + local.set $10 + local.get $12 + call $~lib/rt/pure/__release + end + local.get $10 + i32.store + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + local.tee $9 + local.get $5 + local.tee $11 + local.get $9 + i32.load offset=8 + local.tee $10 + i32.ne + if + local.get $11 + call $~lib/rt/pure/__retain + local.set $11 + local.get $10 + call $~lib/rt/pure/__release + end + local.get $11 + i32.store offset=8 + local.get $0 + local.get $4 + i32.store offset=12 + local.get $0 + local.get $0 + i32.load offset=20 + i32.store offset=16 + local.get $3 + call $~lib/rt/pure/__release + local.get $5 + call $~lib/rt/pure/__release + ) + (func $~lib/map/Map#set (; 96 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + block $~lib/util/hash/HASH|inlined.4 (result i32) + local.get $1 + local.set $3 + local.get $3 + i32.const 255 + i32.and + call $~lib/util/hash/hash8 + br $~lib/util/hash/HASH|inlined.4 + end + local.set $4 + local.get $0 + local.get $1 + local.get $4 + call $~lib/map/Map#find + local.set $5 + local.get $5 + if + local.get $5 + local.get $2 + i32.store8 offset=1 + else + local.get $0 + i32.load offset=16 + local.get $0 + i32.load offset=12 + i32.eq + if + local.get $0 + local.get $0 + i32.load offset=20 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + local.get $0 + i32.load offset=4 + else + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/map/Map#rehash + end + local.get $0 + i32.load offset=8 + call $~lib/rt/pure/__retain + local.set $3 + local.get $3 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $6 + i32.const 1 + i32.add + i32.store offset=16 + local.get $6 + i32.const 8 + i32.mul + i32.add + local.set $5 + local.get $5 + local.get $1 + i32.store8 + local.get $5 + local.get $2 + i32.store8 offset=1 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + local.get $0 + i32.load + local.get $4 + local.get $0 + i32.load offset=4 + i32.and + i32.const 4 + i32.mul + i32.add + local.set $6 + local.get $5 + local.get $6 + i32.load + i32.store offset=4 + local.get $6 + local.get $5 + i32.store + local.get $3 + call $~lib/rt/pure/__release + end + ) + (func $~lib/map/Map#get:size (; 97 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=20 + ) + (func $~lib/map/Map#delete (; 98 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + local.get $1 + block $~lib/util/hash/HASH|inlined.6 (result i32) + local.get $1 + local.set $2 + local.get $2 + i32.const 255 + i32.and + call $~lib/util/hash/hash8 + br $~lib/util/hash/HASH|inlined.6 + end + call $~lib/map/Map#find + local.set $3 + local.get $3 + i32.eqz + if + i32.const 0 + return + end + local.get $3 + local.get $3 + i32.load offset=8 + i32.const 1 + i32.or + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.sub + i32.store offset=20 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.set $4 + local.get $4 + i32.const 1 + i32.add + i32.const 4 + local.tee $2 + local.get $0 + i32.load offset=20 + local.tee $5 + local.get $2 + local.get $5 + i32.gt_u + select + i32.ge_u + if (result i32) + local.get $0 + i32.load offset=20 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + else + i32.const 0 + end + if + local.get $0 + local.get $4 + call $~lib/map/Map#rehash + end + i32.const 1 + ) + (func $std/map/testNumeric (; 99 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + i32.const 0 + call $~lib/map/Map#constructor + local.set $0 + block $break|0 + i32.const 0 + local.set $1 + loop $loop|0 + local.get $1 + i32.const 100 + i32.lt_u + i32.eqz + br_if $break|0 + local.get $0 + local.get $1 + call $~lib/map/Map#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 6 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 10 + local.get $1 + i32.const 255 + i32.and + i32.add + call $~lib/map/Map#set + local.get $0 + local.get $1 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 8 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/map/Map#get + i32.const 10 + local.get $1 + i32.const 255 + i32.and + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 9 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $loop|0 + end + unreachable + end + local.get $0 + call $~lib/map/Map#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 11 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + block $break|1 + i32.const 0 + local.set $1 + loop $loop|1 + local.get $1 + i32.const 100 + i32.lt_u + i32.eqz + br_if $break|1 + local.get $0 + local.get $1 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 15 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/map/Map#get + i32.const 10 + local.get $1 + i32.const 255 + i32.and + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 16 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 20 + local.get $1 + i32.const 255 + i32.and + i32.add + call $~lib/map/Map#set + local.get $0 + local.get $1 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 18 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/map/Map#get + i32.const 20 + local.get $1 + i32.const 255 + i32.and + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 19 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $loop|1 + end + unreachable + end + local.get $0 + call $~lib/map/Map#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 21 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/map/Map#keys + local.set $1 + local.get $0 + call $~lib/map/Map#values + local.set $2 + i32.const 0 + call $~lib/map/Map#constructor + local.set $3 + i32.const 0 + call $~lib/map/Map#constructor + local.set $4 + block $break|2 + i32.const 0 + local.set $5 + loop $loop|2 + local.get $5 + local.get $1 + call $~lib/array/Array#get:length + i32.lt_s + i32.eqz + br_if $break|2 + local.get $1 + local.get $5 + call $~lib/array/Array#__get + local.set $6 + local.get $2 + local.get $5 + call $~lib/array/Array#__get + local.set $7 + local.get $0 + local.get $6 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 31 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $7 + i32.const 20 + i32.sub + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 32 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $6 + local.get $6 + call $~lib/map/Map#set + local.get $4 + local.get $7 + i32.const 20 + i32.sub + local.get $7 + i32.const 20 + i32.sub + call $~lib/map/Map#set + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $loop|2 + end + unreachable + end + local.get $3 + call $~lib/map/Map#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 36 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $4 + call $~lib/map/Map#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 37 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + block $break|3 + i32.const 0 + local.set $5 + loop $loop|3 + local.get $5 + i32.const 50 + i32.lt_u + i32.eqz + br_if $break|3 + local.get $0 + local.get $5 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 41 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + call $~lib/map/Map#get + i32.const 20 + local.get $5 + i32.const 255 + i32.and + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 42 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + call $~lib/map/Map#delete + drop + local.get $0 + local.get $5 + call $~lib/map/Map#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 44 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $loop|3 + end + unreachable + end + local.get $0 + call $~lib/map/Map#get:size + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 46 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + block $break|4 + i32.const 0 + local.set $5 + loop $loop|4 + local.get $5 + i32.const 50 + i32.lt_u + i32.eqz + br_if $break|4 + local.get $0 + local.get $5 + call $~lib/map/Map#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 50 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 10 + local.get $5 + i32.const 255 + i32.and + i32.add + call $~lib/map/Map#set + local.get $0 + local.get $5 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 52 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + call $~lib/map/Map#delete + drop + local.get $0 + local.get $5 + call $~lib/map/Map#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 54 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $loop|4 + end + unreachable + end + local.get $0 + call $~lib/map/Map#get:size + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 56 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/map/Map#clear + local.get $0 + call $~lib/map/Map#get:size + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 60 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/rt/pure/__release + local.get $2 + call $~lib/rt/pure/__release + local.get $3 + call $~lib/rt/pure/__release + local.get $4 + call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release + ) + (func $~lib/map/Map#clear (; 100 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + local.tee $1 + i32.const 0 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $2 + local.get $1 + i32.load + call $~lib/rt/pure/__release + local.get $2 + i32.store + local.get $0 + i32.const 4 + i32.const 1 + i32.sub + i32.store offset=4 + local.get $0 + local.tee $1 + i32.const 0 + i32.const 48 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $2 + local.get $1 + i32.load offset=8 + call $~lib/rt/pure/__release + local.get $2 + i32.store offset=8 + local.get $0 + i32.const 4 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + ) + (func $~lib/map/Map#constructor (; 101 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.eqz + if + i32.const 24 + i32.const 11 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.set $0 + end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + local.get $0 + call $~lib/map/Map#clear + local.get $0 + ) + (func $~lib/util/hash/hash16 (; 102 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + i32.const -2128831035 + local.set $1 + local.get $1 + local.get $0 + i32.const 255 + i32.and + i32.xor + i32.const 16777619 + i32.mul + local.set $1 + local.get $1 + local.get $0 + i32.const 8 + i32.shr_u + i32.xor + i32.const 16777619 + i32.mul + local.set $1 + local.get $1 + ) + (func $~lib/map/Map#find (; 103 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $0 + i32.load + local.get $2 + local.get $0 + i32.load offset=4 + i32.and + i32.const 4 + i32.mul + i32.add + i32.load + local.set $3 + block $break|0 + loop $continue|0 + local.get $3 + i32.eqz + br_if $break|0 + local.get $3 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if (result i32) + local.get $3 + i32.load16_s + local.get $1 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + i32.eq + else + i32.const 0 + end + if + local.get $3 + return + end + local.get $3 + i32.load offset=8 + i32.const 1 + i32.const -1 + i32.xor + i32.and + local.set $3 + br $continue|0 + end + unreachable + end + i32.const 0 + ) + (func $~lib/map/Map#has (; 104 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $0 + local.get $1 + block $~lib/util/hash/HASH|inlined.0 (result i32) + local.get $1 + local.set $2 + local.get $2 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + call $~lib/util/hash/hash16 + br $~lib/util/hash/HASH|inlined.0 + end + call $~lib/map/Map#find + i32.const 0 + i32.ne + ) + (func $~lib/map/Map#rehash (; 105 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + local.get $1 + i32.const 1 + i32.add + local.set $2 + i32.const 0 + local.get $2 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $3 + local.get $2 + i32.const 8 + i32.mul + i32.const 3 + i32.div_s + local.set $4 + i32.const 0 + local.get $4 + i32.const 12 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $5 + local.get $0 + i32.load offset=8 + local.set $6 + local.get $6 + local.get $0 + i32.load offset=16 + i32.const 12 + i32.mul + i32.add + local.set $7 + local.get $5 + local.set $8 + block $break|0 + loop $continue|0 + local.get $6 + local.get $7 + i32.ne + i32.eqz + br_if $break|0 + local.get $6 + local.set $9 + local.get $9 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $8 + local.set $10 + local.get $10 + local.get $9 + i32.load16_s + i32.store16 + local.get $10 + local.get $9 + i32.load offset=4 + i32.store offset=4 + block $~lib/util/hash/HASH|inlined.2 (result i32) + local.get $9 + i32.load16_s + local.set $11 + local.get $11 + call $~lib/util/hash/hash16 + br $~lib/util/hash/HASH|inlined.2 + end + local.get $1 + i32.and + local.set $11 + local.get $3 + local.get $11 + i32.const 4 + i32.mul + i32.add + local.set $12 + local.get $10 + local.get $12 + i32.load + i32.store offset=8 + local.get $12 + local.get $8 + i32.store + local.get $8 + i32.const 12 + i32.add + local.set $8 + end + local.get $6 + i32.const 12 + i32.add + local.set $6 + br $continue|0 + end + unreachable + end + local.get $0 + local.tee $9 + local.get $3 + local.tee $10 + local.get $9 + i32.load + local.tee $12 + i32.ne + if + local.get $10 + call $~lib/rt/pure/__retain + local.set $10 + local.get $12 + call $~lib/rt/pure/__release + end + local.get $10 + i32.store + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + local.tee $9 + local.get $5 + local.tee $11 + local.get $9 + i32.load offset=8 + local.tee $10 + i32.ne + if + local.get $11 + call $~lib/rt/pure/__retain + local.set $11 + local.get $10 + call $~lib/rt/pure/__release + end + local.get $11 + i32.store offset=8 + local.get $0 + local.get $4 + i32.store offset=12 + local.get $0 + local.get $0 + i32.load offset=20 + i32.store offset=16 + local.get $3 + call $~lib/rt/pure/__release + local.get $5 + call $~lib/rt/pure/__release + ) + (func $~lib/map/Map#set (; 106 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + block $~lib/util/hash/HASH|inlined.1 (result i32) + local.get $1 + local.set $3 + local.get $3 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + call $~lib/util/hash/hash16 + br $~lib/util/hash/HASH|inlined.1 + end + local.set $4 + local.get $0 + local.get $1 + local.get $4 + call $~lib/map/Map#find + local.set $5 + local.get $5 + if + local.get $5 + local.get $2 + i32.store offset=4 + else + local.get $0 + i32.load offset=16 + local.get $0 + i32.load offset=12 + i32.eq + if + local.get $0 + local.get $0 + i32.load offset=20 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + local.get $0 + i32.load offset=4 + else + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/map/Map#rehash + end + local.get $0 + i32.load offset=8 + call $~lib/rt/pure/__retain + local.set $3 + local.get $3 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $6 + i32.const 1 + i32.add + i32.store offset=16 + local.get $6 + i32.const 12 + i32.mul + i32.add + local.set $5 + local.get $5 + local.get $1 + i32.store16 + local.get $5 + local.get $2 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + local.get $0 + i32.load + local.get $4 + local.get $0 + i32.load offset=4 + i32.and + i32.const 4 + i32.mul + i32.add + local.set $6 + local.get $5 + local.get $6 + i32.load + i32.store offset=8 + local.get $6 + local.get $5 + i32.store + local.get $3 + call $~lib/rt/pure/__release + end + ) + (func $~lib/map/Map#get (; 107 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + local.get $1 + block $~lib/util/hash/HASH|inlined.3 (result i32) + local.get $1 + local.set $2 + local.get $2 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + call $~lib/util/hash/hash16 + br $~lib/util/hash/HASH|inlined.3 + end + call $~lib/map/Map#find + local.set $3 + local.get $3 + i32.eqz + if + i32.const 416 + i32.const 472 + i32.const 111 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.load offset=4 + ) + (func $~lib/map/Map#get:size (; 108 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=20 + ) + (func $~lib/array/Array#constructor (; 109 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + if (result i32) + local.get $0 + else + i32.const 16 + i32.const 12 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + end + local.get $1 + i32.const 1 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.set $0 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + local.get $1 + i32.store offset=12 + local.get $0 + ) + (func $~lib/array/Array#__unchecked_set (; 110 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.get $2 + i32.store16 + ) + (func $~lib/array/Array#__set (; 111 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + local.get $1 + i32.const 0 + i32.lt_s + if + i32.const 280 + i32.const 512 + i32.const 109 + i32.const 21 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.const 1 + call $~lib/array/ensureSize + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.store offset=12 + end + local.get $0 + local.get $1 + local.get $2 + call $~lib/array/Array#__unchecked_set + ) + (func $~lib/array/Array#set:length (; 112 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + i32.load offset=12 + local.set $2 + local.get $0 + local.get $1 + i32.const 1 + call $~lib/array/ensureSize + local.get $0 + local.get $1 + i32.store offset=12 + ) + (func $~lib/map/Map#keys (; 113 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.load offset=8 + local.set $1 + local.get $0 + i32.load offset=16 + local.set $2 + i32.const 0 + local.get $2 + call $~lib/array/Array#constructor + local.set $3 + i32.const 0 + local.set $4 + block $break|0 + i32.const 0 + local.set $5 + loop $loop|0 + local.get $5 + local.get $2 + i32.lt_s + i32.eqz + br_if $break|0 + local.get $1 + local.get $5 + i32.const 12 + i32.mul + i32.add + local.set $6 + local.get $6 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $3 + local.get $4 + local.get $6 + i32.load16_s + call $~lib/array/Array#__set + local.get $4 + i32.const 1 + i32.add + local.set $4 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $loop|0 + end + unreachable + end + local.get $3 + local.get $4 + call $~lib/array/Array#set:length + local.get $3 + ) + (func $~lib/map/Map#values (; 114 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.load offset=8 + local.set $1 + local.get $0 + i32.load offset=16 + local.set $2 + i32.const 0 + local.get $2 + call $~lib/array/Array#constructor + local.set $3 + i32.const 0 + local.set $4 + block $break|0 + i32.const 0 + local.set $5 + loop $loop|0 + local.get $5 + local.get $2 + i32.lt_s + i32.eqz + br_if $break|0 + local.get $1 + local.get $5 + i32.const 12 + i32.mul + i32.add + local.set $6 + local.get $6 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $3 + local.get $6 + i32.load offset=4 + call $~lib/array/Array#push + drop + local.get $4 + i32.const 1 + i32.add + local.set $4 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $loop|0 + end + unreachable + end + local.get $3 + local.get $4 + call $~lib/array/Array#set:length + local.get $3 + ) + (func $~lib/map/Map#clear (; 115 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + local.tee $1 + i32.const 0 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $2 + local.get $1 + i32.load + call $~lib/rt/pure/__release + local.get $2 + i32.store + local.get $0 + i32.const 4 + i32.const 1 + i32.sub + i32.store offset=4 + local.get $0 + local.tee $1 + i32.const 0 + i32.const 32 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $2 + local.get $1 + i32.load offset=8 + call $~lib/rt/pure/__release + local.get $2 + i32.store offset=8 + local.get $0 + i32.const 4 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + ) + (func $~lib/map/Map#constructor (; 116 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.eqz + if + i32.const 24 + i32.const 13 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.set $0 + end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + local.get $0 + call $~lib/map/Map#clear + local.get $0 + ) + (func $~lib/array/Array#get:length (; 117 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=12 + ) + (func $~lib/array/Array#__unchecked_get (; 118 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.load16_s + ) + (func $~lib/array/Array#__get (; 119 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 280 + i32.const 512 + i32.const 93 + i32.const 41 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/array/Array#__unchecked_get + local.set $2 + local.get $2 + ) + (func $~lib/map/Map#find (; 120 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $0 + i32.load + local.get $2 + local.get $0 + i32.load offset=4 + i32.and + i32.const 4 + i32.mul + i32.add + i32.load + local.set $3 + block $break|0 + loop $continue|0 + local.get $3 + i32.eqz + br_if $break|0 + local.get $3 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz + if (result i32) + local.get $3 + i32.load16_s + local.get $1 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + i32.eq + else + i32.const 0 + end + if + local.get $3 + return + end + local.get $3 + i32.load offset=4 + i32.const 1 + i32.const -1 + i32.xor + i32.and + local.set $3 + br $continue|0 + end + unreachable + end + i32.const 0 + ) + (func $~lib/map/Map#rehash (; 121 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + local.get $1 + i32.const 1 + i32.add + local.set $2 + i32.const 0 + local.get $2 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $3 + local.get $2 + i32.const 8 + i32.mul + i32.const 3 + i32.div_s + local.set $4 + i32.const 0 + local.get $4 + i32.const 8 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $5 + local.get $0 + i32.load offset=8 + local.set $6 + local.get $6 + local.get $0 + i32.load offset=16 + i32.const 8 + i32.mul + i32.add + local.set $7 + local.get $5 + local.set $8 + block $break|0 + loop $continue|0 + local.get $6 + local.get $7 + i32.ne + i32.eqz + br_if $break|0 + local.get $6 + local.set $9 + local.get $9 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz + if + local.get $8 + local.set $10 + local.get $10 + local.get $9 + i32.load16_s + i32.store16 + local.get $10 + local.get $9 + i32.load16_s offset=2 + i32.store16 offset=2 + block $~lib/util/hash/HASH|inlined.5 (result i32) + local.get $9 + i32.load16_s + local.set $11 + local.get $11 + call $~lib/util/hash/hash16 + br $~lib/util/hash/HASH|inlined.5 + end + local.get $1 + i32.and + local.set $11 + local.get $3 + local.get $11 + i32.const 4 + i32.mul + i32.add + local.set $12 + local.get $10 + local.get $12 + i32.load + i32.store offset=4 + local.get $12 + local.get $8 + i32.store + local.get $8 + i32.const 8 + i32.add + local.set $8 + end + local.get $6 + i32.const 8 + i32.add + local.set $6 + br $continue|0 + end + unreachable + end + local.get $0 + local.tee $9 + local.get $3 + local.tee $10 + local.get $9 + i32.load + local.tee $12 + i32.ne + if + local.get $10 + call $~lib/rt/pure/__retain + local.set $10 + local.get $12 + call $~lib/rt/pure/__release + end + local.get $10 + i32.store + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + local.tee $9 + local.get $5 + local.tee $11 + local.get $9 + i32.load offset=8 + local.tee $10 + i32.ne + if + local.get $11 + call $~lib/rt/pure/__retain + local.set $11 + local.get $10 + call $~lib/rt/pure/__release + end + local.get $11 + i32.store offset=8 + local.get $0 + local.get $4 + i32.store offset=12 + local.get $0 + local.get $0 + i32.load offset=20 + i32.store offset=16 + local.get $3 + call $~lib/rt/pure/__release + local.get $5 + call $~lib/rt/pure/__release + ) + (func $~lib/map/Map#set (; 122 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + block $~lib/util/hash/HASH|inlined.4 (result i32) + local.get $1 + local.set $3 + local.get $3 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + call $~lib/util/hash/hash16 + br $~lib/util/hash/HASH|inlined.4 + end + local.set $4 + local.get $0 + local.get $1 + local.get $4 + call $~lib/map/Map#find + local.set $5 + local.get $5 + if + local.get $5 + local.get $2 + i32.store16 offset=2 + else + local.get $0 + i32.load offset=16 + local.get $0 + i32.load offset=12 + i32.eq + if + local.get $0 + local.get $0 + i32.load offset=20 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + local.get $0 + i32.load offset=4 + else + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/map/Map#rehash + end + local.get $0 + i32.load offset=8 + call $~lib/rt/pure/__retain + local.set $3 + local.get $3 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $6 + i32.const 1 + i32.add + i32.store offset=16 + local.get $6 + i32.const 8 + i32.mul + i32.add + local.set $5 + local.get $5 + local.get $1 + i32.store16 + local.get $5 + local.get $2 + i32.store16 offset=2 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + local.get $0 + i32.load + local.get $4 + local.get $0 + i32.load offset=4 + i32.and + i32.const 4 + i32.mul + i32.add + local.set $6 + local.get $5 + local.get $6 + i32.load + i32.store offset=4 + local.get $6 + local.get $5 + i32.store + local.get $3 + call $~lib/rt/pure/__release + end + ) + (func $~lib/map/Map#get:size (; 123 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=20 + ) + (func $~lib/map/Map#delete (; 124 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + local.get $1 + block $~lib/util/hash/HASH|inlined.6 (result i32) + local.get $1 + local.set $2 + local.get $2 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + call $~lib/util/hash/hash16 + br $~lib/util/hash/HASH|inlined.6 + end + call $~lib/map/Map#find + local.set $3 + local.get $3 + i32.eqz + if + i32.const 0 + return + end + local.get $3 + local.get $3 + i32.load offset=8 + i32.const 1 + i32.or + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.sub + i32.store offset=20 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.set $4 + local.get $4 + i32.const 1 + i32.add + i32.const 4 + local.tee $2 + local.get $0 + i32.load offset=20 + local.tee $5 + local.get $2 + local.get $5 + i32.gt_u + select + i32.ge_u + if (result i32) + local.get $0 + i32.load offset=20 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + else + i32.const 0 + end + if + local.get $0 + local.get $4 + call $~lib/map/Map#rehash + end + i32.const 1 + ) + (func $std/map/testNumeric (; 125 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + i32.const 0 + call $~lib/map/Map#constructor + local.set $0 + block $break|0 + i32.const 0 + local.set $1 + loop $loop|0 + local.get $1 + i32.const 100 + i32.lt_s + i32.eqz + br_if $break|0 + local.get $0 + local.get $1 + call $~lib/map/Map#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 6 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 10 + local.get $1 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + i32.add + call $~lib/map/Map#set + local.get $0 + local.get $1 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 8 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/map/Map#get + i32.const 10 + local.get $1 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 9 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $loop|0 + end + unreachable + end + local.get $0 + call $~lib/map/Map#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 11 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + block $break|1 + i32.const 0 + local.set $1 + loop $loop|1 + local.get $1 + i32.const 100 + i32.lt_s + i32.eqz + br_if $break|1 + local.get $0 + local.get $1 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 15 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/map/Map#get + i32.const 10 + local.get $1 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 16 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 20 + local.get $1 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + i32.add + call $~lib/map/Map#set + local.get $0 + local.get $1 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 18 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/map/Map#get + i32.const 20 + local.get $1 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 19 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $loop|1 + end + unreachable + end + local.get $0 + call $~lib/map/Map#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 21 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/map/Map#keys + local.set $1 + local.get $0 + call $~lib/map/Map#values + local.set $2 + i32.const 0 + call $~lib/map/Map#constructor + local.set $3 + i32.const 0 + call $~lib/map/Map#constructor + local.set $4 + block $break|2 + i32.const 0 + local.set $5 + loop $loop|2 + local.get $5 + local.get $1 + call $~lib/array/Array#get:length + i32.lt_s + i32.eqz + br_if $break|2 + local.get $1 + local.get $5 + call $~lib/array/Array#__get + local.set $6 + local.get $2 + local.get $5 + call $~lib/array/Array#__get + local.set $7 + local.get $0 + local.get $6 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 31 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $7 + i32.const 20 + i32.sub + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 32 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $6 + local.get $6 + call $~lib/map/Map#set + local.get $4 + local.get $7 + i32.const 20 + i32.sub + local.get $7 + i32.const 20 + i32.sub + call $~lib/map/Map#set + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $loop|2 + end + unreachable + end + local.get $3 + call $~lib/map/Map#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 36 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $4 + call $~lib/map/Map#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 37 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + block $break|3 + i32.const 0 + local.set $5 + loop $loop|3 + local.get $5 + i32.const 50 + i32.lt_s + i32.eqz + br_if $break|3 + local.get $0 + local.get $5 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 41 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + call $~lib/map/Map#get + i32.const 20 + local.get $5 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 42 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + call $~lib/map/Map#delete + drop + local.get $0 + local.get $5 + call $~lib/map/Map#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 44 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $loop|3 + end + unreachable + end + local.get $0 + call $~lib/map/Map#get:size + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 46 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + block $break|4 + i32.const 0 + local.set $5 + loop $loop|4 + local.get $5 + i32.const 50 + i32.lt_s + i32.eqz + br_if $break|4 + local.get $0 + local.get $5 + call $~lib/map/Map#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 50 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 10 + local.get $5 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + i32.add + call $~lib/map/Map#set + local.get $0 + local.get $5 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 52 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + call $~lib/map/Map#delete + drop + local.get $0 + local.get $5 + call $~lib/map/Map#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 54 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $loop|4 + end + unreachable + end + local.get $0 + call $~lib/map/Map#get:size + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 56 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/map/Map#clear + local.get $0 + call $~lib/map/Map#get:size + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 60 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/rt/pure/__release + local.get $2 + call $~lib/rt/pure/__release + local.get $3 + call $~lib/rt/pure/__release + local.get $4 + call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release + ) + (func $~lib/map/Map#clear (; 126 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + local.tee $1 + i32.const 0 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $2 + local.get $1 + i32.load + call $~lib/rt/pure/__release + local.get $2 + i32.store + local.get $0 + i32.const 4 + i32.const 1 + i32.sub + i32.store offset=4 + local.get $0 + local.tee $1 + i32.const 0 + i32.const 48 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $2 + local.get $1 + i32.load offset=8 + call $~lib/rt/pure/__release + local.get $2 + i32.store offset=8 + local.get $0 + i32.const 4 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + ) + (func $~lib/map/Map#constructor (; 127 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.eqz + if + i32.const 24 + i32.const 14 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.set $0 + end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + local.get $0 + call $~lib/map/Map#clear + local.get $0 + ) + (func $~lib/map/Map#find (; 128 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $0 + i32.load + local.get $2 + local.get $0 + i32.load offset=4 + i32.and + i32.const 4 + i32.mul + i32.add + i32.load + local.set $3 + block $break|0 + loop $continue|0 + local.get $3 + i32.eqz + br_if $break|0 + local.get $3 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if (result i32) + local.get $3 + i32.load16_u + local.get $1 + i32.const 65535 + i32.and + i32.eq + else + i32.const 0 + end + if + local.get $3 + return + end + local.get $3 + i32.load offset=8 + i32.const 1 + i32.const -1 + i32.xor + i32.and + local.set $3 + br $continue|0 + end + unreachable + end + i32.const 0 + ) + (func $~lib/map/Map#has (; 129 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $0 + local.get $1 + block $~lib/util/hash/HASH|inlined.0 (result i32) + local.get $1 + local.set $2 + local.get $2 + i32.const 65535 + i32.and + call $~lib/util/hash/hash16 + br $~lib/util/hash/HASH|inlined.0 + end + call $~lib/map/Map#find + i32.const 0 + i32.ne + ) + (func $~lib/map/Map#rehash (; 130 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + local.get $1 + i32.const 1 + i32.add + local.set $2 + i32.const 0 + local.get $2 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $3 + local.get $2 + i32.const 8 + i32.mul + i32.const 3 + i32.div_s + local.set $4 + i32.const 0 + local.get $4 + i32.const 12 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $5 + local.get $0 + i32.load offset=8 + local.set $6 + local.get $6 + local.get $0 + i32.load offset=16 + i32.const 12 + i32.mul + i32.add + local.set $7 + local.get $5 + local.set $8 + block $break|0 + loop $continue|0 + local.get $6 + local.get $7 + i32.ne + i32.eqz + br_if $break|0 + local.get $6 + local.set $9 + local.get $9 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $8 + local.set $10 + local.get $10 + local.get $9 + i32.load16_u + i32.store16 + local.get $10 + local.get $9 + i32.load offset=4 + i32.store offset=4 + block $~lib/util/hash/HASH|inlined.2 (result i32) + local.get $9 + i32.load16_u + local.set $11 + local.get $11 + call $~lib/util/hash/hash16 + br $~lib/util/hash/HASH|inlined.2 + end + local.get $1 + i32.and + local.set $11 + local.get $3 + local.get $11 + i32.const 4 + i32.mul + i32.add + local.set $12 + local.get $10 + local.get $12 + i32.load + i32.store offset=8 + local.get $12 + local.get $8 + i32.store + local.get $8 + i32.const 12 + i32.add + local.set $8 + end + local.get $6 + i32.const 12 + i32.add + local.set $6 + br $continue|0 + end + unreachable + end + local.get $0 + local.tee $9 + local.get $3 + local.tee $10 + local.get $9 + i32.load + local.tee $12 + i32.ne + if + local.get $10 + call $~lib/rt/pure/__retain + local.set $10 + local.get $12 + call $~lib/rt/pure/__release + end + local.get $10 + i32.store + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + local.tee $9 + local.get $5 + local.tee $11 + local.get $9 + i32.load offset=8 + local.tee $10 + i32.ne + if + local.get $11 + call $~lib/rt/pure/__retain + local.set $11 + local.get $10 + call $~lib/rt/pure/__release + end + local.get $11 + i32.store offset=8 + local.get $0 + local.get $4 + i32.store offset=12 + local.get $0 + local.get $0 + i32.load offset=20 + i32.store offset=16 + local.get $3 + call $~lib/rt/pure/__release + local.get $5 + call $~lib/rt/pure/__release + ) + (func $~lib/map/Map#set (; 131 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + block $~lib/util/hash/HASH|inlined.1 (result i32) + local.get $1 + local.set $3 + local.get $3 + i32.const 65535 + i32.and + call $~lib/util/hash/hash16 + br $~lib/util/hash/HASH|inlined.1 + end + local.set $4 + local.get $0 + local.get $1 + local.get $4 + call $~lib/map/Map#find + local.set $5 + local.get $5 + if + local.get $5 + local.get $2 + i32.store offset=4 + else + local.get $0 + i32.load offset=16 + local.get $0 + i32.load offset=12 + i32.eq + if + local.get $0 + local.get $0 + i32.load offset=20 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + local.get $0 + i32.load offset=4 + else + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/map/Map#rehash + end + local.get $0 + i32.load offset=8 + call $~lib/rt/pure/__retain + local.set $3 + local.get $3 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $6 + i32.const 1 + i32.add + i32.store offset=16 + local.get $6 + i32.const 12 + i32.mul + i32.add + local.set $5 + local.get $5 + local.get $1 + i32.store16 + local.get $5 + local.get $2 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + local.get $0 + i32.load + local.get $4 + local.get $0 + i32.load offset=4 + i32.and + i32.const 4 + i32.mul + i32.add + local.set $6 + local.get $5 + local.get $6 + i32.load + i32.store offset=8 + local.get $6 + local.get $5 + i32.store + local.get $3 + call $~lib/rt/pure/__release + end + ) + (func $~lib/map/Map#get (; 132 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + local.get $1 + block $~lib/util/hash/HASH|inlined.3 (result i32) + local.get $1 + local.set $2 + local.get $2 + i32.const 65535 + i32.and + call $~lib/util/hash/hash16 + br $~lib/util/hash/HASH|inlined.3 + end + call $~lib/map/Map#find + local.set $3 + local.get $3 + i32.eqz + if + i32.const 416 + i32.const 472 + i32.const 111 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.load offset=4 + ) + (func $~lib/map/Map#get:size (; 133 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=20 + ) + (func $~lib/array/Array#constructor (; 134 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + if (result i32) + local.get $0 + else + i32.const 16 + i32.const 15 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + end + local.get $1 + i32.const 1 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.set $0 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + local.get $1 + i32.store offset=12 + local.get $0 + ) + (func $~lib/array/Array#__unchecked_set (; 135 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.get $2 + i32.store16 + ) + (func $~lib/array/Array#__set (; 136 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + local.get $1 + i32.const 0 + i32.lt_s + if + i32.const 280 + i32.const 512 + i32.const 109 + i32.const 21 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.const 1 + call $~lib/array/ensureSize + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.store offset=12 + end + local.get $0 + local.get $1 + local.get $2 + call $~lib/array/Array#__unchecked_set + ) + (func $~lib/array/Array#set:length (; 137 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + i32.load offset=12 + local.set $2 + local.get $0 + local.get $1 + i32.const 1 + call $~lib/array/ensureSize + local.get $0 + local.get $1 + i32.store offset=12 + ) + (func $~lib/map/Map#keys (; 138 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.load offset=8 + local.set $1 + local.get $0 + i32.load offset=16 + local.set $2 + i32.const 0 + local.get $2 + call $~lib/array/Array#constructor + local.set $3 + i32.const 0 + local.set $4 + block $break|0 + i32.const 0 + local.set $5 + loop $loop|0 + local.get $5 + local.get $2 + i32.lt_s + i32.eqz + br_if $break|0 + local.get $1 + local.get $5 + i32.const 12 + i32.mul + i32.add + local.set $6 + local.get $6 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $3 + local.get $4 + local.get $6 + i32.load16_u + call $~lib/array/Array#__set + local.get $4 + i32.const 1 + i32.add + local.set $4 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $loop|0 + end + unreachable + end + local.get $3 + local.get $4 + call $~lib/array/Array#set:length + local.get $3 + ) + (func $~lib/map/Map#values (; 139 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.load offset=8 + local.set $1 + local.get $0 + i32.load offset=16 + local.set $2 + i32.const 0 + local.get $2 + call $~lib/array/Array#constructor + local.set $3 + i32.const 0 + local.set $4 + block $break|0 + i32.const 0 + local.set $5 + loop $loop|0 + local.get $5 + local.get $2 + i32.lt_s + i32.eqz + br_if $break|0 + local.get $1 + local.get $5 + i32.const 12 + i32.mul + i32.add + local.set $6 + local.get $6 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $3 + local.get $6 + i32.load offset=4 + call $~lib/array/Array#push + drop + local.get $4 + i32.const 1 + i32.add + local.set $4 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $loop|0 + end + unreachable + end + local.get $3 + local.get $4 + call $~lib/array/Array#set:length + local.get $3 + ) + (func $~lib/map/Map#clear (; 140 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + local.tee $1 + i32.const 0 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $2 + local.get $1 + i32.load + call $~lib/rt/pure/__release + local.get $2 + i32.store + local.get $0 + i32.const 4 + i32.const 1 + i32.sub + i32.store offset=4 + local.get $0 + local.tee $1 + i32.const 0 + i32.const 32 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $2 + local.get $1 + i32.load offset=8 + call $~lib/rt/pure/__release + local.get $2 + i32.store offset=8 + local.get $0 + i32.const 4 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + ) + (func $~lib/map/Map#constructor (; 141 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.eqz + if + i32.const 24 + i32.const 16 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.set $0 + end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + local.get $0 + call $~lib/map/Map#clear + local.get $0 + ) + (func $~lib/array/Array#get:length (; 142 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=12 + ) + (func $~lib/array/Array#__unchecked_get (; 143 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.load16_u + ) + (func $~lib/array/Array#__get (; 144 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 280 + i32.const 512 + i32.const 93 + i32.const 41 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/array/Array#__unchecked_get + local.set $2 + local.get $2 + ) + (func $~lib/map/Map#find (; 145 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $0 + i32.load + local.get $2 + local.get $0 + i32.load offset=4 + i32.and + i32.const 4 + i32.mul + i32.add + i32.load + local.set $3 + block $break|0 + loop $continue|0 + local.get $3 + i32.eqz + br_if $break|0 + local.get $3 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz + if (result i32) + local.get $3 + i32.load16_u + local.get $1 + i32.const 65535 + i32.and + i32.eq + else + i32.const 0 + end + if + local.get $3 + return + end + local.get $3 + i32.load offset=4 + i32.const 1 + i32.const -1 + i32.xor + i32.and + local.set $3 + br $continue|0 + end + unreachable + end + i32.const 0 + ) + (func $~lib/map/Map#rehash (; 146 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + local.get $1 + i32.const 1 + i32.add + local.set $2 + i32.const 0 + local.get $2 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $3 + local.get $2 + i32.const 8 + i32.mul + i32.const 3 + i32.div_s + local.set $4 + i32.const 0 + local.get $4 + i32.const 8 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $5 + local.get $0 + i32.load offset=8 + local.set $6 + local.get $6 + local.get $0 + i32.load offset=16 + i32.const 8 + i32.mul + i32.add + local.set $7 + local.get $5 + local.set $8 + block $break|0 + loop $continue|0 + local.get $6 + local.get $7 + i32.ne + i32.eqz + br_if $break|0 + local.get $6 + local.set $9 + local.get $9 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz + if + local.get $8 + local.set $10 + local.get $10 + local.get $9 + i32.load16_u + i32.store16 + local.get $10 + local.get $9 + i32.load16_u offset=2 + i32.store16 offset=2 + block $~lib/util/hash/HASH|inlined.5 (result i32) + local.get $9 + i32.load16_u + local.set $11 + local.get $11 + call $~lib/util/hash/hash16 + br $~lib/util/hash/HASH|inlined.5 + end + local.get $1 + i32.and + local.set $11 + local.get $3 + local.get $11 + i32.const 4 + i32.mul + i32.add + local.set $12 + local.get $10 + local.get $12 + i32.load + i32.store offset=4 + local.get $12 + local.get $8 + i32.store + local.get $8 + i32.const 8 + i32.add + local.set $8 + end + local.get $6 + i32.const 8 + i32.add + local.set $6 + br $continue|0 + end + unreachable + end + local.get $0 + local.tee $9 + local.get $3 + local.tee $10 + local.get $9 + i32.load + local.tee $12 + i32.ne + if + local.get $10 + call $~lib/rt/pure/__retain + local.set $10 + local.get $12 + call $~lib/rt/pure/__release + end + local.get $10 + i32.store + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + local.tee $9 + local.get $5 + local.tee $11 + local.get $9 + i32.load offset=8 + local.tee $10 + i32.ne + if + local.get $11 + call $~lib/rt/pure/__retain + local.set $11 + local.get $10 + call $~lib/rt/pure/__release + end + local.get $11 + i32.store offset=8 + local.get $0 + local.get $4 + i32.store offset=12 + local.get $0 + local.get $0 + i32.load offset=20 + i32.store offset=16 + local.get $3 + call $~lib/rt/pure/__release + local.get $5 + call $~lib/rt/pure/__release + ) + (func $~lib/map/Map#set (; 147 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + block $~lib/util/hash/HASH|inlined.4 (result i32) + local.get $1 + local.set $3 + local.get $3 + i32.const 65535 + i32.and + call $~lib/util/hash/hash16 + br $~lib/util/hash/HASH|inlined.4 + end + local.set $4 + local.get $0 + local.get $1 + local.get $4 + call $~lib/map/Map#find + local.set $5 + local.get $5 + if + local.get $5 + local.get $2 + i32.store16 offset=2 + else + local.get $0 + i32.load offset=16 + local.get $0 + i32.load offset=12 + i32.eq + if + local.get $0 + local.get $0 + i32.load offset=20 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + local.get $0 + i32.load offset=4 + else + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/map/Map#rehash + end + local.get $0 + i32.load offset=8 + call $~lib/rt/pure/__retain + local.set $3 + local.get $3 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $6 + i32.const 1 + i32.add + i32.store offset=16 + local.get $6 + i32.const 8 + i32.mul + i32.add + local.set $5 + local.get $5 + local.get $1 + i32.store16 + local.get $5 + local.get $2 + i32.store16 offset=2 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + local.get $0 + i32.load + local.get $4 + local.get $0 + i32.load offset=4 + i32.and + i32.const 4 + i32.mul + i32.add + local.set $6 + local.get $5 + local.get $6 + i32.load + i32.store offset=4 + local.get $6 + local.get $5 + i32.store + local.get $3 + call $~lib/rt/pure/__release + end + ) + (func $~lib/map/Map#get:size (; 148 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=20 + ) + (func $~lib/map/Map#delete (; 149 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + local.get $1 + block $~lib/util/hash/HASH|inlined.6 (result i32) + local.get $1 + local.set $2 + local.get $2 + i32.const 65535 + i32.and + call $~lib/util/hash/hash16 + br $~lib/util/hash/HASH|inlined.6 + end + call $~lib/map/Map#find + local.set $3 + local.get $3 + i32.eqz + if + i32.const 0 + return + end + local.get $3 + local.get $3 + i32.load offset=8 + i32.const 1 + i32.or + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.sub + i32.store offset=20 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.set $4 + local.get $4 + i32.const 1 + i32.add + i32.const 4 + local.tee $2 + local.get $0 + i32.load offset=20 + local.tee $5 + local.get $2 + local.get $5 + i32.gt_u + select + i32.ge_u + if (result i32) + local.get $0 + i32.load offset=20 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + else + i32.const 0 + end + if + local.get $0 + local.get $4 + call $~lib/map/Map#rehash + end + i32.const 1 + ) + (func $std/map/testNumeric (; 150 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + i32.const 0 + call $~lib/map/Map#constructor + local.set $0 + block $break|0 + i32.const 0 + local.set $1 + loop $loop|0 + local.get $1 + i32.const 100 + i32.lt_u + i32.eqz + br_if $break|0 + local.get $0 + local.get $1 + call $~lib/map/Map#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 6 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 10 + local.get $1 + i32.const 65535 + i32.and + i32.add + call $~lib/map/Map#set + local.get $0 + local.get $1 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 8 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/map/Map#get + i32.const 10 + local.get $1 + i32.const 65535 + i32.and + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 9 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $loop|0 + end + unreachable + end + local.get $0 + call $~lib/map/Map#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 11 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + block $break|1 + i32.const 0 + local.set $1 + loop $loop|1 + local.get $1 + i32.const 100 + i32.lt_u + i32.eqz + br_if $break|1 + local.get $0 + local.get $1 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 15 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/map/Map#get + i32.const 10 + local.get $1 + i32.const 65535 + i32.and + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 16 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 20 + local.get $1 + i32.const 65535 + i32.and + i32.add + call $~lib/map/Map#set + local.get $0 + local.get $1 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 18 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/map/Map#get + i32.const 20 + local.get $1 + i32.const 65535 + i32.and + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 19 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $loop|1 + end + unreachable + end + local.get $0 + call $~lib/map/Map#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 21 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/map/Map#keys + local.set $1 + local.get $0 + call $~lib/map/Map#values + local.set $2 + i32.const 0 + call $~lib/map/Map#constructor + local.set $3 + i32.const 0 + call $~lib/map/Map#constructor + local.set $4 + block $break|2 + i32.const 0 + local.set $5 + loop $loop|2 + local.get $5 + local.get $1 + call $~lib/array/Array#get:length + i32.lt_s + i32.eqz + br_if $break|2 + local.get $1 + local.get $5 + call $~lib/array/Array#__get + local.set $6 + local.get $2 + local.get $5 + call $~lib/array/Array#__get + local.set $7 + local.get $0 + local.get $6 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 31 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $7 + i32.const 20 + i32.sub + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 32 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $6 + local.get $6 + call $~lib/map/Map#set + local.get $4 + local.get $7 + i32.const 20 + i32.sub + local.get $7 + i32.const 20 + i32.sub + call $~lib/map/Map#set + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $loop|2 + end + unreachable + end + local.get $3 + call $~lib/map/Map#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 36 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $4 + call $~lib/map/Map#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 37 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + block $break|3 + i32.const 0 + local.set $5 + loop $loop|3 + local.get $5 + i32.const 50 + i32.lt_u + i32.eqz + br_if $break|3 + local.get $0 + local.get $5 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 41 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + call $~lib/map/Map#get + i32.const 20 + local.get $5 + i32.const 65535 + i32.and + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 42 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + call $~lib/map/Map#delete + drop + local.get $0 + local.get $5 + call $~lib/map/Map#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 44 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $loop|3 + end + unreachable + end + local.get $0 + call $~lib/map/Map#get:size + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 46 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + block $break|4 + i32.const 0 + local.set $5 + loop $loop|4 + local.get $5 + i32.const 50 + i32.lt_u + i32.eqz + br_if $break|4 + local.get $0 + local.get $5 + call $~lib/map/Map#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 50 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 10 + local.get $5 + i32.const 65535 + i32.and + i32.add + call $~lib/map/Map#set + local.get $0 + local.get $5 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 52 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + call $~lib/map/Map#delete + drop + local.get $0 + local.get $5 + call $~lib/map/Map#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 54 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $loop|4 + end + unreachable + end + local.get $0 + call $~lib/map/Map#get:size + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 56 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/map/Map#clear + local.get $0 + call $~lib/map/Map#get:size + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 60 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/rt/pure/__release + local.get $2 + call $~lib/rt/pure/__release + local.get $3 + call $~lib/rt/pure/__release + local.get $4 + call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release + ) + (func $~lib/map/Map#has (; 151 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $0 + local.get $1 + block $~lib/util/hash/HASH|inlined.2 (result i32) + local.get $1 + local.set $2 + local.get $2 + call $~lib/util/hash/hash32 + br $~lib/util/hash/HASH|inlined.2 + end + call $~lib/map/Map#find + i32.const 0 + i32.ne + ) + (func $~lib/map/Map#get (; 152 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + local.get $1 + block $~lib/util/hash/HASH|inlined.3 (result i32) + local.get $1 + local.set $2 + local.get $2 + call $~lib/util/hash/hash32 + br $~lib/util/hash/HASH|inlined.3 + end + call $~lib/map/Map#find + local.set $3 + local.get $3 + i32.eqz + if + i32.const 416 + i32.const 472 + i32.const 111 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.load offset=4 + ) + (func $~lib/array/Array#__unchecked_set (; 153 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $2 + i32.store + ) + (func $~lib/array/Array#__set (; 154 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + local.get $1 + i32.const 0 + i32.lt_s + if + i32.const 280 + i32.const 512 + i32.const 109 + i32.const 21 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.const 2 + call $~lib/array/ensureSize + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.store offset=12 + end + local.get $0 + local.get $1 + local.get $2 + call $~lib/array/Array#__unchecked_set + ) + (func $~lib/map/Map#keys (; 155 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.load offset=8 + local.set $1 + local.get $0 + i32.load offset=16 + local.set $2 + i32.const 0 + local.get $2 + call $~lib/array/Array#constructor + local.set $3 + i32.const 0 + local.set $4 + block $break|0 + i32.const 0 + local.set $5 + loop $loop|0 + local.get $5 + local.get $2 + i32.lt_s + i32.eqz + br_if $break|0 + local.get $1 + local.get $5 + i32.const 12 + i32.mul + i32.add + local.set $6 + local.get $6 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $3 + local.get $4 + local.get $6 + i32.load + call $~lib/array/Array#__set + local.get $4 + i32.const 1 + i32.add + local.set $4 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $loop|0 + end + unreachable + end + local.get $3 + local.get $4 + call $~lib/array/Array#set:length + local.get $3 + ) + (func $~lib/map/Map#values (; 156 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.load offset=8 + local.set $1 + local.get $0 + i32.load offset=16 + local.set $2 + i32.const 0 + local.get $2 + call $~lib/array/Array#constructor + local.set $3 + i32.const 0 + local.set $4 + block $break|0 + i32.const 0 + local.set $5 + loop $loop|0 + local.get $5 + local.get $2 + i32.lt_s + i32.eqz + br_if $break|0 + local.get $1 + local.get $5 + i32.const 12 + i32.mul + i32.add + local.set $6 + local.get $6 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $3 + local.get $6 + i32.load offset=4 + call $~lib/array/Array#push + drop + local.get $4 + i32.const 1 + i32.add + local.set $4 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $loop|0 + end + unreachable + end + local.get $3 + local.get $4 + call $~lib/array/Array#set:length + local.get $3 + ) + (func $~lib/array/Array#get:length (; 157 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=12 + ) + (func $~lib/map/Map#delete (; 158 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + local.get $1 + block $~lib/util/hash/HASH|inlined.4 (result i32) + local.get $1 + local.set $2 + local.get $2 + call $~lib/util/hash/hash32 + br $~lib/util/hash/HASH|inlined.4 + end + call $~lib/map/Map#find + local.set $3 + local.get $3 + i32.eqz + if + i32.const 0 + return + end + local.get $3 + local.get $3 + i32.load offset=8 + i32.const 1 + i32.or + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.sub + i32.store offset=20 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.set $4 + local.get $4 + i32.const 1 + i32.add + i32.const 4 + local.tee $2 + local.get $0 + i32.load offset=20 + local.tee $5 + local.get $2 + local.get $5 + i32.gt_u + select + i32.ge_u + if (result i32) + local.get $0 + i32.load offset=20 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + else + i32.const 0 + end + if + local.get $0 + local.get $4 + call $~lib/map/Map#rehash + end + i32.const 1 + ) + (func $std/map/testNumeric (; 159 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + i32.const 0 + call $~lib/map/Map#constructor + local.set $0 + block $break|0 + i32.const 0 + local.set $1 + loop $loop|0 + local.get $1 + i32.const 100 + i32.lt_s + i32.eqz + br_if $break|0 + local.get $0 + local.get $1 + call $~lib/map/Map#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 6 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 10 + local.get $1 + i32.add + call $~lib/map/Map#set + local.get $0 + local.get $1 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 8 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/map/Map#get + i32.const 10 + local.get $1 + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 9 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $loop|0 + end + unreachable + end + local.get $0 + call $~lib/map/Map#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 11 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + block $break|1 + i32.const 0 + local.set $1 + loop $loop|1 + local.get $1 + i32.const 100 + i32.lt_s + i32.eqz + br_if $break|1 + local.get $0 + local.get $1 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 15 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/map/Map#get + i32.const 10 + local.get $1 + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 16 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 20 + local.get $1 + i32.add + call $~lib/map/Map#set + local.get $0 + local.get $1 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 18 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/map/Map#get + i32.const 20 + local.get $1 + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 19 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $loop|1 + end + unreachable + end + local.get $0 + call $~lib/map/Map#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 21 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/map/Map#keys + local.set $1 + local.get $0 + call $~lib/map/Map#values + local.set $2 + i32.const 0 + call $~lib/map/Map#constructor + local.set $3 + i32.const 0 + call $~lib/map/Map#constructor + local.set $4 + block $break|2 + i32.const 0 + local.set $5 + loop $loop|2 + local.get $5 + local.get $1 + call $~lib/array/Array#get:length + i32.lt_s + i32.eqz + br_if $break|2 + local.get $1 + local.get $5 + call $~lib/array/Array#__get + local.set $6 + local.get $2 + local.get $5 + call $~lib/array/Array#__get + local.set $7 + local.get $0 + local.get $6 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 31 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $7 + i32.const 20 + i32.sub + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 32 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $6 + local.get $6 + call $~lib/map/Map#set + local.get $4 + local.get $7 + i32.const 20 + i32.sub + local.get $7 + i32.const 20 + i32.sub + call $~lib/map/Map#set + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $loop|2 + end + unreachable + end + local.get $3 + call $~lib/map/Map#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 36 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $4 + call $~lib/map/Map#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 37 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + block $break|3 + i32.const 0 + local.set $5 + loop $loop|3 + local.get $5 + i32.const 50 + i32.lt_s + i32.eqz + br_if $break|3 + local.get $0 + local.get $5 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 41 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + call $~lib/map/Map#get + i32.const 20 + local.get $5 + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 42 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + call $~lib/map/Map#delete + drop + local.get $0 + local.get $5 + call $~lib/map/Map#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 44 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $loop|3 + end + unreachable + end + local.get $0 + call $~lib/map/Map#get:size + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 46 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + block $break|4 + i32.const 0 + local.set $5 + loop $loop|4 + local.get $5 + i32.const 50 + i32.lt_s + i32.eqz + br_if $break|4 + local.get $0 + local.get $5 + call $~lib/map/Map#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 50 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 10 + local.get $5 + i32.add + call $~lib/map/Map#set + local.get $0 + local.get $5 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 52 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + call $~lib/map/Map#delete + drop + local.get $0 + local.get $5 + call $~lib/map/Map#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 54 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $loop|4 + end + unreachable + end + local.get $0 + call $~lib/map/Map#get:size + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 56 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/map/Map#clear + local.get $0 + call $~lib/map/Map#get:size + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 60 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/rt/pure/__release + local.get $2 + call $~lib/rt/pure/__release + local.get $3 + call $~lib/rt/pure/__release + local.get $4 + call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release + ) + (func $~lib/map/Map#clear (; 160 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + local.tee $1 + i32.const 0 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $2 + local.get $1 + i32.load + call $~lib/rt/pure/__release + local.get $2 + i32.store + local.get $0 + i32.const 4 + i32.const 1 + i32.sub + i32.store offset=4 + local.get $0 + local.tee $1 + i32.const 0 + i32.const 48 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $2 + local.get $1 + i32.load offset=8 + call $~lib/rt/pure/__release + local.get $2 + i32.store offset=8 + local.get $0 + i32.const 4 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + ) + (func $~lib/map/Map#constructor (; 161 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.eqz + if + i32.const 24 + i32.const 17 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.set $0 + end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + local.get $0 + call $~lib/map/Map#clear + local.get $0 + ) + (func $~lib/map/Map#find (; 162 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $0 + i32.load + local.get $2 + local.get $0 + i32.load offset=4 + i32.and + i32.const 4 + i32.mul + i32.add + i32.load + local.set $3 + block $break|0 + loop $continue|0 + local.get $3 + i32.eqz + br_if $break|0 + local.get $3 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if (result i32) + local.get $3 + i32.load + local.get $1 + i32.eq + else + i32.const 0 + end + if + local.get $3 + return + end + local.get $3 + i32.load offset=8 + i32.const 1 + i32.const -1 + i32.xor + i32.and + local.set $3 + br $continue|0 + end + unreachable + end + i32.const 0 + ) + (func $~lib/map/Map#has (; 163 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $0 + local.get $1 + block $~lib/util/hash/HASH|inlined.0 (result i32) + local.get $1 + local.set $2 + local.get $2 + call $~lib/util/hash/hash32 + br $~lib/util/hash/HASH|inlined.0 + end + call $~lib/map/Map#find + i32.const 0 + i32.ne + ) + (func $~lib/map/Map#rehash (; 164 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + local.get $1 + i32.const 1 + i32.add + local.set $2 + i32.const 0 + local.get $2 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $3 + local.get $2 + i32.const 8 + i32.mul + i32.const 3 + i32.div_s + local.set $4 + i32.const 0 + local.get $4 + i32.const 12 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $5 + local.get $0 + i32.load offset=8 + local.set $6 + local.get $6 + local.get $0 + i32.load offset=16 + i32.const 12 + i32.mul + i32.add + local.set $7 + local.get $5 + local.set $8 + block $break|0 + loop $continue|0 + local.get $6 + local.get $7 + i32.ne + i32.eqz + br_if $break|0 + local.get $6 + local.set $9 + local.get $9 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $8 + local.set $10 + local.get $10 + local.get $9 + i32.load + i32.store + local.get $10 + local.get $9 + i32.load offset=4 + i32.store offset=4 + block $~lib/util/hash/HASH|inlined.2 (result i32) + local.get $9 + i32.load + local.set $11 + local.get $11 + call $~lib/util/hash/hash32 + br $~lib/util/hash/HASH|inlined.2 + end + local.get $1 + i32.and + local.set $11 + local.get $3 + local.get $11 + i32.const 4 + i32.mul + i32.add + local.set $12 + local.get $10 + local.get $12 + i32.load + i32.store offset=8 + local.get $12 + local.get $8 + i32.store + local.get $8 + i32.const 12 + i32.add + local.set $8 + end + local.get $6 + i32.const 12 + i32.add + local.set $6 + br $continue|0 + end + unreachable + end + local.get $0 + local.tee $9 + local.get $3 + local.tee $10 + local.get $9 + i32.load + local.tee $12 + i32.ne + if + local.get $10 + call $~lib/rt/pure/__retain + local.set $10 + local.get $12 + call $~lib/rt/pure/__release + end + local.get $10 + i32.store + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + local.tee $9 + local.get $5 + local.tee $11 + local.get $9 + i32.load offset=8 + local.tee $10 + i32.ne + if + local.get $11 + call $~lib/rt/pure/__retain + local.set $11 + local.get $10 + call $~lib/rt/pure/__release + end + local.get $11 + i32.store offset=8 + local.get $0 + local.get $4 + i32.store offset=12 + local.get $0 + local.get $0 + i32.load offset=20 + i32.store offset=16 + local.get $3 + call $~lib/rt/pure/__release + local.get $5 + call $~lib/rt/pure/__release + ) + (func $~lib/map/Map#set (; 165 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + block $~lib/util/hash/HASH|inlined.1 (result i32) + local.get $1 + local.set $3 + local.get $3 + call $~lib/util/hash/hash32 + br $~lib/util/hash/HASH|inlined.1 + end + local.set $4 + local.get $0 + local.get $1 + local.get $4 + call $~lib/map/Map#find + local.set $5 + local.get $5 + if + local.get $5 + local.get $2 + i32.store offset=4 + else + local.get $0 + i32.load offset=16 + local.get $0 + i32.load offset=12 + i32.eq + if + local.get $0 + local.get $0 + i32.load offset=20 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + local.get $0 + i32.load offset=4 + else + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/map/Map#rehash + end + local.get $0 + i32.load offset=8 + call $~lib/rt/pure/__retain + local.set $3 + local.get $3 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $6 + i32.const 1 + i32.add + i32.store offset=16 + local.get $6 + i32.const 12 + i32.mul + i32.add + local.set $5 + local.get $5 + local.get $1 + i32.store + local.get $5 + local.get $2 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + local.get $0 + i32.load + local.get $4 + local.get $0 + i32.load offset=4 + i32.and + i32.const 4 + i32.mul + i32.add + local.set $6 + local.get $5 + local.get $6 + i32.load + i32.store offset=8 + local.get $6 + local.get $5 + i32.store + local.get $3 + call $~lib/rt/pure/__release + end + ) + (func $~lib/map/Map#get (; 166 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + local.get $1 + block $~lib/util/hash/HASH|inlined.3 (result i32) + local.get $1 + local.set $2 + local.get $2 + call $~lib/util/hash/hash32 + br $~lib/util/hash/HASH|inlined.3 + end + call $~lib/map/Map#find + local.set $3 + local.get $3 + i32.eqz + if + i32.const 416 + i32.const 472 + i32.const 111 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.load offset=4 + ) + (func $~lib/map/Map#get:size (; 167 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=20 + ) + (func $~lib/array/Array#constructor (; 168 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + if (result i32) + local.get $0 + else + i32.const 16 + i32.const 18 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + end + local.get $1 + i32.const 2 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.set $0 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + local.get $1 + i32.store offset=12 + local.get $0 + ) + (func $~lib/array/Array#__unchecked_set (; 169 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $2 + i32.store + ) + (func $~lib/array/Array#__set (; 170 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + local.get $1 + i32.const 0 + i32.lt_s + if + i32.const 280 + i32.const 512 + i32.const 109 + i32.const 21 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.const 2 + call $~lib/array/ensureSize + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.store offset=12 + end + local.get $0 + local.get $1 + local.get $2 + call $~lib/array/Array#__unchecked_set + ) + (func $~lib/array/Array#set:length (; 171 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + i32.load offset=12 + local.set $2 + local.get $0 + local.get $1 + i32.const 2 + call $~lib/array/ensureSize + local.get $0 + local.get $1 + i32.store offset=12 + ) + (func $~lib/map/Map#keys (; 172 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.load offset=8 + local.set $1 + local.get $0 + i32.load offset=16 + local.set $2 + i32.const 0 + local.get $2 + call $~lib/array/Array#constructor + local.set $3 + i32.const 0 + local.set $4 + block $break|0 + i32.const 0 + local.set $5 + loop $loop|0 + local.get $5 + local.get $2 + i32.lt_s + i32.eqz + br_if $break|0 + local.get $1 + local.get $5 + i32.const 12 + i32.mul + i32.add + local.set $6 + local.get $6 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $3 + local.get $4 + local.get $6 + i32.load + call $~lib/array/Array#__set + local.get $4 + i32.const 1 + i32.add + local.set $4 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $loop|0 + end + unreachable + end + local.get $3 + local.get $4 + call $~lib/array/Array#set:length + local.get $3 + ) + (func $~lib/map/Map#values (; 173 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.load offset=8 + local.set $1 + local.get $0 + i32.load offset=16 + local.set $2 + i32.const 0 + local.get $2 + call $~lib/array/Array#constructor + local.set $3 + i32.const 0 + local.set $4 + block $break|0 + i32.const 0 + local.set $5 + loop $loop|0 + local.get $5 + local.get $2 + i32.lt_s + i32.eqz + br_if $break|0 + local.get $1 + local.get $5 + i32.const 12 + i32.mul + i32.add + local.set $6 + local.get $6 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $3 + local.get $6 + i32.load offset=4 + call $~lib/array/Array#push + drop + local.get $4 + i32.const 1 + i32.add + local.set $4 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $loop|0 + end + unreachable + end + local.get $3 + local.get $4 + call $~lib/array/Array#set:length + local.get $3 + ) + (func $~lib/map/Map#clear (; 174 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + local.tee $1 + i32.const 0 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $2 + local.get $1 + i32.load + call $~lib/rt/pure/__release + local.get $2 + i32.store + local.get $0 + i32.const 4 + i32.const 1 + i32.sub + i32.store offset=4 + local.get $0 + local.tee $1 + i32.const 0 + i32.const 48 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $2 + local.get $1 + i32.load offset=8 + call $~lib/rt/pure/__release + local.get $2 + i32.store offset=8 + local.get $0 + i32.const 4 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + ) + (func $~lib/map/Map#constructor (; 175 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.eqz + if + i32.const 24 + i32.const 19 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.set $0 + end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + local.get $0 + call $~lib/map/Map#clear + local.get $0 + ) + (func $~lib/array/Array#get:length (; 176 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=12 + ) + (func $~lib/array/Array#__unchecked_get (; 177 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + ) + (func $~lib/array/Array#__get (; 178 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 280 + i32.const 512 + i32.const 93 + i32.const 41 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/array/Array#__unchecked_get + local.set $2 + local.get $2 + ) + (func $~lib/map/Map#find (; 179 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $0 + i32.load + local.get $2 + local.get $0 + i32.load offset=4 + i32.and + i32.const 4 + i32.mul + i32.add + i32.load + local.set $3 + block $break|0 + loop $continue|0 + local.get $3 + i32.eqz + br_if $break|0 + local.get $3 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if (result i32) + local.get $3 + i32.load + local.get $1 + i32.eq + else + i32.const 0 + end + if + local.get $3 + return + end + local.get $3 + i32.load offset=8 + i32.const 1 + i32.const -1 + i32.xor + i32.and + local.set $3 + br $continue|0 + end + unreachable + end + i32.const 0 + ) + (func $~lib/map/Map#rehash (; 180 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + local.get $1 + i32.const 1 + i32.add + local.set $2 + i32.const 0 + local.get $2 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $3 + local.get $2 + i32.const 8 + i32.mul + i32.const 3 + i32.div_s + local.set $4 + i32.const 0 + local.get $4 + i32.const 12 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $5 + local.get $0 + i32.load offset=8 + local.set $6 + local.get $6 + local.get $0 + i32.load offset=16 + i32.const 12 + i32.mul + i32.add + local.set $7 + local.get $5 + local.set $8 + block $break|0 + loop $continue|0 + local.get $6 + local.get $7 + i32.ne + i32.eqz + br_if $break|0 + local.get $6 + local.set $9 + local.get $9 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $8 + local.set $10 + local.get $10 + local.get $9 + i32.load + i32.store + local.get $10 + local.get $9 + i32.load offset=4 + i32.store offset=4 + block $~lib/util/hash/HASH|inlined.5 (result i32) + local.get $9 + i32.load + local.set $11 + local.get $11 + call $~lib/util/hash/hash32 + br $~lib/util/hash/HASH|inlined.5 + end + local.get $1 + i32.and + local.set $11 + local.get $3 + local.get $11 + i32.const 4 + i32.mul + i32.add + local.set $12 + local.get $10 + local.get $12 + i32.load + i32.store offset=8 + local.get $12 + local.get $8 + i32.store + local.get $8 + i32.const 12 + i32.add + local.set $8 + end + local.get $6 + i32.const 12 + i32.add + local.set $6 + br $continue|0 + end + unreachable + end + local.get $0 + local.tee $9 + local.get $3 + local.tee $10 + local.get $9 + i32.load + local.tee $12 + i32.ne + if + local.get $10 + call $~lib/rt/pure/__retain + local.set $10 + local.get $12 + call $~lib/rt/pure/__release + end + local.get $10 + i32.store + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + local.tee $9 + local.get $5 + local.tee $11 + local.get $9 + i32.load offset=8 + local.tee $10 + i32.ne + if + local.get $11 + call $~lib/rt/pure/__retain + local.set $11 + local.get $10 + call $~lib/rt/pure/__release + end + local.get $11 + i32.store offset=8 + local.get $0 + local.get $4 + i32.store offset=12 + local.get $0 + local.get $0 + i32.load offset=20 + i32.store offset=16 + local.get $3 + call $~lib/rt/pure/__release + local.get $5 + call $~lib/rt/pure/__release + ) + (func $~lib/map/Map#set (; 181 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + block $~lib/util/hash/HASH|inlined.4 (result i32) + local.get $1 + local.set $3 + local.get $3 + call $~lib/util/hash/hash32 + br $~lib/util/hash/HASH|inlined.4 + end + local.set $4 + local.get $0 + local.get $1 + local.get $4 + call $~lib/map/Map#find + local.set $5 + local.get $5 + if + local.get $5 + local.get $2 + i32.store offset=4 + else + local.get $0 + i32.load offset=16 + local.get $0 + i32.load offset=12 + i32.eq + if + local.get $0 + local.get $0 + i32.load offset=20 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + local.get $0 + i32.load offset=4 + else + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/map/Map#rehash + end + local.get $0 + i32.load offset=8 + call $~lib/rt/pure/__retain + local.set $3 + local.get $3 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $6 + i32.const 1 + i32.add + i32.store offset=16 + local.get $6 + i32.const 12 + i32.mul + i32.add + local.set $5 + local.get $5 + local.get $1 + i32.store + local.get $5 + local.get $2 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + local.get $0 + i32.load + local.get $4 + local.get $0 + i32.load offset=4 + i32.and + i32.const 4 + i32.mul + i32.add + local.set $6 + local.get $5 + local.get $6 + i32.load + i32.store offset=8 + local.get $6 + local.get $5 + i32.store + local.get $3 + call $~lib/rt/pure/__release + end + ) + (func $~lib/map/Map#get:size (; 182 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=20 + ) + (func $~lib/map/Map#delete (; 183 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + local.get $1 + block $~lib/util/hash/HASH|inlined.6 (result i32) + local.get $1 + local.set $2 + local.get $2 + call $~lib/util/hash/hash32 + br $~lib/util/hash/HASH|inlined.6 + end + call $~lib/map/Map#find + local.set $3 + local.get $3 + i32.eqz + if + i32.const 0 + return + end + local.get $3 + local.get $3 + i32.load offset=8 + i32.const 1 + i32.or + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.sub + i32.store offset=20 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.set $4 + local.get $4 + i32.const 1 + i32.add + i32.const 4 + local.tee $2 + local.get $0 + i32.load offset=20 + local.tee $5 + local.get $2 + local.get $5 + i32.gt_u + select + i32.ge_u + if (result i32) + local.get $0 + i32.load offset=20 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + else + i32.const 0 + end + if + local.get $0 + local.get $4 + call $~lib/map/Map#rehash + end + i32.const 1 + ) + (func $std/map/testNumeric (; 184 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + i32.const 0 + call $~lib/map/Map#constructor + local.set $0 + block $break|0 + i32.const 0 + local.set $1 + loop $loop|0 + local.get $1 + i32.const 100 + i32.lt_u + i32.eqz + br_if $break|0 + local.get $0 + local.get $1 + call $~lib/map/Map#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 6 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 10 + local.get $1 + i32.add + call $~lib/map/Map#set + local.get $0 + local.get $1 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 8 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/map/Map#get + i32.const 10 + local.get $1 + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 9 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $loop|0 + end + unreachable + end + local.get $0 + call $~lib/map/Map#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 i32.const 376 i32.const 11 i32.const 2 @@ -5071,7 +12901,7 @@ br_if $break|1 local.get $0 local.get $1 - call $~lib/map/Map#has + call $~lib/map/Map#has i32.eqz if i32.const 0 @@ -5083,11 +12913,9 @@ end local.get $0 local.get $1 - call $~lib/map/Map#get + call $~lib/map/Map#get i32.const 10 local.get $1 - i32.const 255 - i32.and i32.add i32.eq i32.eqz @@ -5103,13 +12931,11 @@ local.get $1 i32.const 20 local.get $1 - i32.const 255 - i32.and i32.add - call $~lib/map/Map#set + call $~lib/map/Map#set local.get $0 local.get $1 - call $~lib/map/Map#has + call $~lib/map/Map#has i32.eqz if i32.const 0 @@ -5121,11 +12947,9 @@ end local.get $0 local.get $1 - call $~lib/map/Map#get + call $~lib/map/Map#get i32.const 20 local.get $1 - i32.const 255 - i32.and i32.add i32.eq i32.eqz @@ -5146,7 +12970,7 @@ unreachable end local.get $0 - call $~lib/map/Map#get:size + call $~lib/map/Map#get:size i32.const 100 i32.eq i32.eqz @@ -5158,182 +12982,288 @@ call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/map/Map#keys + local.set $1 + local.get $0 + call $~lib/map/Map#values + local.set $2 + i32.const 0 + call $~lib/map/Map#constructor + local.set $3 + i32.const 0 + call $~lib/map/Map#constructor + local.set $4 block $break|2 i32.const 0 - local.set $1 + local.set $5 loop $loop|2 + local.get $5 + local.get $1 + call $~lib/array/Array#get:length + i32.lt_s + i32.eqz + br_if $break|2 local.get $1 + local.get $5 + call $~lib/array/Array#__get + local.set $6 + local.get $2 + local.get $5 + call $~lib/array/Array#__get + local.set $7 + local.get $0 + local.get $6 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 31 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $7 + i32.const 20 + i32.sub + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 32 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $6 + local.get $6 + call $~lib/map/Map#set + local.get $4 + local.get $7 + i32.const 20 + i32.sub + local.get $7 + i32.const 20 + i32.sub + call $~lib/map/Map#set + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $loop|2 + end + unreachable + end + local.get $3 + call $~lib/map/Map#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 36 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $4 + call $~lib/map/Map#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 37 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + block $break|3 + i32.const 0 + local.set $5 + loop $loop|3 + local.get $5 i32.const 50 i32.lt_u i32.eqz - br_if $break|2 + br_if $break|3 local.get $0 - local.get $1 - call $~lib/map/Map#has + local.get $5 + call $~lib/map/Map#has i32.eqz if i32.const 0 i32.const 376 - i32.const 25 + i32.const 41 i32.const 4 call $~lib/builtins/abort unreachable end local.get $0 - local.get $1 - call $~lib/map/Map#get + local.get $5 + call $~lib/map/Map#get i32.const 20 - local.get $1 - i32.const 255 - i32.and + local.get $5 i32.add i32.eq i32.eqz if i32.const 0 i32.const 376 - i32.const 26 + i32.const 42 i32.const 4 call $~lib/builtins/abort unreachable end local.get $0 - local.get $1 - call $~lib/map/Map#delete + local.get $5 + call $~lib/map/Map#delete drop local.get $0 - local.get $1 - call $~lib/map/Map#has + local.get $5 + call $~lib/map/Map#has i32.eqz i32.eqz if i32.const 0 i32.const 376 - i32.const 28 + i32.const 44 i32.const 4 call $~lib/builtins/abort unreachable end - local.get $1 + local.get $5 i32.const 1 i32.add - local.set $1 - br $loop|2 + local.set $5 + br $loop|3 end unreachable end local.get $0 - call $~lib/map/Map#get:size + call $~lib/map/Map#get:size i32.const 50 i32.eq i32.eqz if i32.const 0 i32.const 376 - i32.const 30 + i32.const 46 i32.const 2 call $~lib/builtins/abort unreachable end - block $break|3 + block $break|4 i32.const 0 - local.set $1 - loop $loop|3 - local.get $1 + local.set $5 + loop $loop|4 + local.get $5 i32.const 50 i32.lt_u i32.eqz - br_if $break|3 + br_if $break|4 local.get $0 - local.get $1 - call $~lib/map/Map#has + local.get $5 + call $~lib/map/Map#has i32.eqz i32.eqz if i32.const 0 i32.const 376 - i32.const 34 + i32.const 50 i32.const 4 call $~lib/builtins/abort unreachable end local.get $0 - local.get $1 + local.get $5 i32.const 10 - local.get $1 - i32.const 255 - i32.and + local.get $5 i32.add - call $~lib/map/Map#set + call $~lib/map/Map#set local.get $0 - local.get $1 - call $~lib/map/Map#has + local.get $5 + call $~lib/map/Map#has i32.eqz if i32.const 0 i32.const 376 - i32.const 36 + i32.const 52 i32.const 4 call $~lib/builtins/abort unreachable end local.get $0 - local.get $1 - call $~lib/map/Map#delete + local.get $5 + call $~lib/map/Map#delete drop local.get $0 - local.get $1 - call $~lib/map/Map#has + local.get $5 + call $~lib/map/Map#has i32.eqz i32.eqz if i32.const 0 i32.const 376 - i32.const 38 + i32.const 54 i32.const 4 call $~lib/builtins/abort unreachable end - local.get $1 + local.get $5 i32.const 1 i32.add - local.set $1 - br $loop|3 + local.set $5 + br $loop|4 end unreachable end local.get $0 - call $~lib/map/Map#get:size + call $~lib/map/Map#get:size i32.const 50 i32.eq i32.eqz if i32.const 0 i32.const 376 - i32.const 40 + i32.const 56 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - call $~lib/map/Map#clear + call $~lib/map/Map#clear local.get $0 - call $~lib/map/Map#get:size + call $~lib/map/Map#get:size i32.const 0 i32.eq i32.eqz if i32.const 0 i32.const 376 - i32.const 44 + i32.const 60 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $1 + call $~lib/rt/pure/__release + local.get $2 + call $~lib/rt/pure/__release + local.get $3 + call $~lib/rt/pure/__release + local.get $4 + call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/map/Map#clear (; 54 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/map/Map#clear (; 185 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 @@ -5355,7 +13285,7 @@ local.get $0 local.tee $1 i32.const 0 - i32.const 48 + i32.const 64 call $~lib/arraybuffer/ArrayBuffer#constructor local.set $2 local.get $1 @@ -5373,12 +13303,12 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/map/Map#constructor (; 55 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map#constructor (; 186 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if i32.const 24 - i32.const 5 + i32.const 20 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain local.set $0 @@ -5402,32 +13332,98 @@ i32.const 0 i32.store offset=20 local.get $0 - call $~lib/map/Map#clear + call $~lib/map/Map#clear local.get $0 ) - (func $~lib/util/hash/hash16 (; 56 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/hash/hash64 (; 187 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) (local $1 i32) - i32.const -2128831035 + (local $2 i32) + (local $3 i32) + local.get $0 + i32.wrap_i64 local.set $1 - local.get $1 local.get $0 + i64.const 32 + i64.shr_u + i32.wrap_i64 + local.set $2 + i32.const -2128831035 + local.set $3 + local.get $3 + local.get $1 i32.const 255 i32.and i32.xor i32.const 16777619 i32.mul - local.set $1 + local.set $3 + local.get $3 local.get $1 - local.get $0 i32.const 8 i32.shr_u + i32.const 255 + i32.and i32.xor i32.const 16777619 i32.mul - local.set $1 + local.set $3 + local.get $3 + local.get $1 + i32.const 16 + i32.shr_u + i32.const 255 + i32.and + i32.xor + i32.const 16777619 + i32.mul + local.set $3 + local.get $3 local.get $1 + i32.const 24 + i32.shr_u + i32.xor + i32.const 16777619 + i32.mul + local.set $3 + local.get $3 + local.get $2 + i32.const 255 + i32.and + i32.xor + i32.const 16777619 + i32.mul + local.set $3 + local.get $3 + local.get $2 + i32.const 8 + i32.shr_u + i32.const 255 + i32.and + i32.xor + i32.const 16777619 + i32.mul + local.set $3 + local.get $3 + local.get $2 + i32.const 16 + i32.shr_u + i32.const 255 + i32.and + i32.xor + i32.const 16777619 + i32.mul + local.set $3 + local.get $3 + local.get $2 + i32.const 24 + i32.shr_u + i32.xor + i32.const 16777619 + i32.mul + local.set $3 + local.get $3 ) - (func $~lib/map/Map#find (; 57 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/map/Map#find (; 188 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) (local $3 i32) local.get $0 i32.load @@ -5446,19 +13442,15 @@ i32.eqz br_if $break|0 local.get $3 - i32.load offset=8 + i32.load offset=12 i32.const 1 i32.and i32.eqz if (result i32) local.get $3 - i32.load16_s + i64.load local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.eq + i64.eq else i32.const 0 end @@ -5467,7 +13459,7 @@ return end local.get $3 - i32.load offset=8 + i32.load offset=12 i32.const 1 i32.const -1 i32.xor @@ -5479,26 +13471,22 @@ end i32.const 0 ) - (func $~lib/map/Map#has (; 58 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/map/Map#has (; 189 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) + (local $2 i64) local.get $0 local.get $1 - block $~lib/util/hash/HASH|inlined.0 (result i32) + block $~lib/util/hash/HASH|inlined.0 (result i32) local.get $1 local.set $2 local.get $2 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - call $~lib/util/hash/hash16 - br $~lib/util/hash/HASH|inlined.0 + call $~lib/util/hash/hash64 + br $~lib/util/hash/HASH|inlined.0 end - call $~lib/map/Map#find + call $~lib/map/Map#find i32.const 0 i32.ne ) - (func $~lib/map/Map#rehash (; 59 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 190 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -5508,8 +13496,9 @@ (local $8 i32) (local $9 i32) (local $10 i32) - (local $11 i32) + (local $11 i64) (local $12 i32) + (local $13 i32) local.get $1 i32.const 1 i32.add @@ -5528,7 +13517,7 @@ local.set $4 i32.const 0 local.get $4 - i32.const 12 + i32.const 16 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor local.set $5 @@ -5538,7 +13527,7 @@ local.get $6 local.get $0 i32.load offset=16 - i32.const 12 + i32.const 16 i32.mul i32.add local.set $7 @@ -5554,7 +13543,7 @@ local.get $6 local.set $9 local.get $9 - i32.load offset=8 + i32.load offset=12 i32.const 1 i32.and i32.eqz @@ -5563,43 +13552,43 @@ local.set $10 local.get $10 local.get $9 - i32.load16_s - i32.store16 + i64.load + i64.store local.get $10 local.get $9 - i32.load offset=4 - i32.store offset=4 - block $~lib/util/hash/HASH|inlined.2 (result i32) + i32.load offset=8 + i32.store offset=8 + block $~lib/util/hash/HASH|inlined.2 (result i32) local.get $9 - i32.load16_s + i64.load local.set $11 local.get $11 - call $~lib/util/hash/hash16 - br $~lib/util/hash/HASH|inlined.2 + call $~lib/util/hash/hash64 + br $~lib/util/hash/HASH|inlined.2 end local.get $1 i32.and - local.set $11 + local.set $12 local.get $3 - local.get $11 + local.get $12 i32.const 4 i32.mul i32.add - local.set $12 + local.set $13 local.get $10 - local.get $12 + local.get $13 i32.load - i32.store offset=8 - local.get $12 + i32.store offset=12 + local.get $13 local.get $8 i32.store local.get $8 - i32.const 12 + i32.const 16 i32.add local.set $8 end local.get $6 - i32.const 12 + i32.const 16 i32.add local.set $6 br $continue|0 @@ -5611,643 +13600,391 @@ local.get $3 local.tee $10 local.get $9 - i32.load - local.tee $12 - i32.ne - if - local.get $10 - call $~lib/rt/pure/__retain - local.set $10 - local.get $12 - call $~lib/rt/pure/__release - end - local.get $10 - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - local.tee $9 - local.get $5 - local.tee $11 - local.get $9 - i32.load offset=8 - local.tee $10 - i32.ne - if - local.get $11 - call $~lib/rt/pure/__retain - local.set $11 - local.get $10 - call $~lib/rt/pure/__release - end - local.get $11 - i32.store offset=8 - local.get $0 - local.get $4 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - ) - (func $~lib/map/Map#set (; 60 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - block $~lib/util/hash/HASH|inlined.1 (result i32) - local.get $1 - local.set $3 - local.get $3 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - call $~lib/util/hash/hash16 - br $~lib/util/hash/HASH|inlined.1 - end - local.set $4 - local.get $0 - local.get $1 - local.get $4 - call $~lib/map/Map#find - local.set $5 - local.get $5 - if - local.get $5 - local.get $2 - i32.store offset=4 - else - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/map/Map#rehash - end - local.get $0 - i32.load offset=8 + i32.load + local.tee $13 + i32.ne + if + local.get $10 call $~lib/rt/pure/__retain - local.set $3 - local.get $3 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $6 - i32.const 1 - i32.add - i32.store offset=16 - local.get $6 - i32.const 12 - i32.mul - i32.add - local.set $5 - local.get $5 - local.get $1 - i32.store16 - local.get $5 - local.get $2 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $0 - i32.load - local.get $4 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - local.set $6 - local.get $5 - local.get $6 - i32.load - i32.store offset=8 - local.get $6 - local.get $5 - i32.store - local.get $3 + local.set $10 + local.get $13 call $~lib/rt/pure/__release end - ) - (func $~lib/map/Map#get (; 61 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) + local.get $10 + i32.store local.get $0 local.get $1 - block $~lib/util/hash/HASH|inlined.3 (result i32) - local.get $1 - local.set $2 - local.get $2 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - call $~lib/util/hash/hash16 - br $~lib/util/hash/HASH|inlined.3 - end - call $~lib/map/Map#find - local.set $3 - local.get $3 - i32.eqz + i32.store offset=4 + local.get $0 + local.tee $9 + local.get $5 + local.tee $12 + local.get $9 + i32.load offset=8 + local.tee $10 + i32.ne if - i32.const 416 - i32.const 472 - i32.const 111 - i32.const 16 - call $~lib/builtins/abort - unreachable + local.get $12 + call $~lib/rt/pure/__retain + local.set $12 + local.get $10 + call $~lib/rt/pure/__release end - local.get $3 - i32.load offset=4 - ) - (func $~lib/map/Map#get:size (; 62 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $12 + i32.store offset=8 + local.get $0 + local.get $4 + i32.store offset=12 + local.get $0 local.get $0 i32.load offset=20 + i32.store offset=16 + local.get $3 + call $~lib/rt/pure/__release + local.get $5 + call $~lib/rt/pure/__release ) - (func $~lib/map/Map#delete (; 63 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) + (func $~lib/map/Map#set (; 191 ;) (type $FUNCSIG$viji) (param $0 i32) (param $1 i64) (param $2 i32) + (local $3 i64) (local $4 i32) (local $5 i32) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.4 (result i32) + (local $6 i32) + (local $7 i32) + block $~lib/util/hash/HASH|inlined.1 (result i32) local.get $1 - local.set $2 - local.get $2 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - call $~lib/util/hash/hash16 - br $~lib/util/hash/HASH|inlined.4 - end - call $~lib/map/Map#find - local.set $3 - local.get $3 - i32.eqz - if - i32.const 0 - return + local.set $3 + local.get $3 + call $~lib/util/hash/hash64 + br $~lib/util/hash/HASH|inlined.1 end - local.get $3 - local.get $3 - i32.load offset=8 - i32.const 1 - i32.or - i32.store offset=8 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u local.set $4 - local.get $4 - i32.const 1 - i32.add - i32.const 4 - local.tee $2 local.get $0 - i32.load offset=20 - local.tee $5 - local.get $2 + local.get $1 + local.get $4 + call $~lib/map/Map#find + local.set $5 local.get $5 - i32.gt_u - select - i32.ge_u - if (result i32) - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - else - i32.const 0 - end if - local.get $0 - local.get $4 - call $~lib/map/Map#rehash - end - i32.const 1 - ) - (func $std/map/testNumeric (; 64 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 i32) - i32.const 0 - call $~lib/map/Map#constructor - local.set $0 - block $break|0 - i32.const 0 - local.set $1 - loop $loop|0 - local.get $1 - i32.const 100 - i32.lt_s - i32.eqz - br_if $break|0 - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 6 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 10 - local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.add - call $~lib/map/Map#set - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 8 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 10 - local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 9 - i32.const 4 - call $~lib/builtins/abort - unreachable + local.get $5 + local.get $2 + i32.store offset=8 + else + local.get $0 + i32.load offset=16 + local.get $0 + i32.load offset=12 + i32.eq + if + local.get $0 + local.get $0 + i32.load offset=20 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + local.get $0 + i32.load offset=4 + else + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $loop|0 + call $~lib/map/Map#rehash end - unreachable + local.get $0 + i32.load offset=8 + call $~lib/rt/pure/__retain + local.set $6 + local.get $6 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $7 + i32.const 1 + i32.add + i32.store offset=16 + local.get $7 + i32.const 16 + i32.mul + i32.add + local.set $5 + local.get $5 + local.get $1 + i64.store + local.get $5 + local.get $2 + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + local.get $0 + i32.load + local.get $4 + local.get $0 + i32.load offset=4 + i32.and + i32.const 4 + i32.mul + i32.add + local.set $7 + local.get $5 + local.get $7 + i32.load + i32.store offset=12 + local.get $7 + local.get $5 + i32.store + local.get $6 + call $~lib/rt/pure/__release end + ) + (func $~lib/map/Map#get (; 192 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) + (local $2 i64) + (local $3 i32) local.get $0 - call $~lib/map/Map#get:size - i32.const 100 - i32.eq + local.get $1 + block $~lib/util/hash/HASH|inlined.3 (result i32) + local.get $1 + local.set $2 + local.get $2 + call $~lib/util/hash/hash64 + br $~lib/util/hash/HASH|inlined.3 + end + call $~lib/map/Map#find + local.set $3 + local.get $3 i32.eqz if - i32.const 0 - i32.const 376 - i32.const 11 - i32.const 2 + i32.const 416 + i32.const 472 + i32.const 111 + i32.const 16 call $~lib/builtins/abort unreachable end - block $break|1 - i32.const 0 - local.set $1 - loop $loop|1 - local.get $1 - i32.const 100 - i32.lt_s - i32.eqz - br_if $break|1 - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 15 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 10 - local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 16 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 20 - local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.add - call $~lib/map/Map#set - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 18 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 20 - local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 19 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $loop|1 - end - unreachable + local.get $3 + i32.load offset=8 + ) + (func $~lib/map/Map#get:size (; 193 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=20 + ) + (func $~lib/array/Array#constructor (; 194 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + if (result i32) + local.get $0 + else + i32.const 16 + i32.const 21 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain end + local.get $1 + i32.const 3 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.set $0 local.get $0 - call $~lib/map/Map#get:size - i32.const 100 - i32.eq - i32.eqz + i32.const 0 + i32.store offset=12 + local.get $0 + local.get $1 + i32.store offset=12 + local.get $0 + ) + (func $~lib/array/Array#__unchecked_set (; 195 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.get $2 + i64.store + ) + (func $~lib/array/Array#__set (; 196 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u if + local.get $1 i32.const 0 - i32.const 376 - i32.const 21 - i32.const 2 - call $~lib/builtins/abort - unreachable + i32.lt_s + if + i32.const 280 + i32.const 512 + i32.const 109 + i32.const 21 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.const 3 + call $~lib/array/ensureSize + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.store offset=12 end - block $break|2 + local.get $0 + local.get $1 + local.get $2 + call $~lib/array/Array#__unchecked_set + ) + (func $~lib/array/Array#set:length (; 197 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + i32.load offset=12 + local.set $2 + local.get $0 + local.get $1 + i32.const 3 + call $~lib/array/ensureSize + local.get $0 + local.get $1 + i32.store offset=12 + ) + (func $~lib/map/Map#keys (; 198 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.load offset=8 + local.set $1 + local.get $0 + i32.load offset=16 + local.set $2 + i32.const 0 + local.get $2 + call $~lib/array/Array#constructor + local.set $3 + i32.const 0 + local.set $4 + block $break|0 i32.const 0 - local.set $1 - loop $loop|2 - local.get $1 - i32.const 50 + local.set $5 + loop $loop|0 + local.get $5 + local.get $2 i32.lt_s i32.eqz - br_if $break|2 - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 25 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 20 + br_if $break|0 local.get $1 + local.get $5 i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.mul i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 26 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#delete - drop - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz + local.set $6 + local.get $6 + i32.load offset=12 + i32.const 1 + i32.and i32.eqz if - i32.const 0 - i32.const 376 - i32.const 28 - i32.const 4 - call $~lib/builtins/abort - unreachable + local.get $3 + local.get $4 + local.get $6 + i64.load + call $~lib/array/Array#__set + local.get $4 + i32.const 1 + i32.add + local.set $4 end - local.get $1 + local.get $5 i32.const 1 i32.add - local.set $1 - br $loop|2 + local.set $5 + br $loop|0 end unreachable end + local.get $3 + local.get $4 + call $~lib/array/Array#set:length + local.get $3 + ) + (func $~lib/map/Map#values (; 199 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) local.get $0 - call $~lib/map/Map#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 30 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block $break|3 + i32.load offset=8 + local.set $1 + local.get $0 + i32.load offset=16 + local.set $2 + i32.const 0 + local.get $2 + call $~lib/array/Array#constructor + local.set $3 + i32.const 0 + local.set $4 + block $break|0 i32.const 0 - local.set $1 - loop $loop|3 - local.get $1 - i32.const 50 + local.set $5 + loop $loop|0 + local.get $5 + local.get $2 i32.lt_s i32.eqz - br_if $break|3 - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 34 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 10 + br_if $break|0 local.get $1 + local.get $5 i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.mul i32.add - call $~lib/map/Map#set - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 36 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#delete - drop - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz + local.set $6 + local.get $6 + i32.load offset=12 + i32.const 1 + i32.and i32.eqz if - i32.const 0 - i32.const 376 - i32.const 38 - i32.const 4 - call $~lib/builtins/abort - unreachable + local.get $3 + local.get $6 + i32.load offset=8 + call $~lib/array/Array#push + drop + local.get $4 + i32.const 1 + i32.add + local.set $4 end - local.get $1 + local.get $5 i32.const 1 i32.add - local.set $1 - br $loop|3 + local.set $5 + br $loop|0 end unreachable end - local.get $0 - call $~lib/map/Map#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 40 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/map/Map#clear - local.get $0 - call $~lib/map/Map#get:size - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 44 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release + local.get $3 + local.get $4 + call $~lib/array/Array#set:length + local.get $3 ) - (func $~lib/map/Map#clear (; 65 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/map/Map#clear (; 200 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 @@ -6269,7 +14006,7 @@ local.get $0 local.tee $1 i32.const 0 - i32.const 48 + i32.const 96 call $~lib/arraybuffer/ArrayBuffer#constructor local.set $2 local.get $1 @@ -6287,12 +14024,12 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/map/Map#constructor (; 66 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map#constructor (; 201 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if i32.const 24 - i32.const 6 + i32.const 22 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain local.set $0 @@ -6316,10 +14053,43 @@ i32.const 0 i32.store offset=20 local.get $0 - call $~lib/map/Map#clear + call $~lib/map/Map#clear + local.get $0 + ) + (func $~lib/array/Array#get:length (; 202 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=12 + ) + (func $~lib/array/Array#__unchecked_get (; 203 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 3 + i32.shl + i32.add + i64.load + ) + (func $~lib/array/Array#__get (; 204 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) + (local $2 i64) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 280 + i32.const 512 + i32.const 93 + i32.const 41 + call $~lib/builtins/abort + unreachable + end local.get $0 + local.get $1 + call $~lib/array/Array#__unchecked_get + local.set $2 + local.get $2 ) - (func $~lib/map/Map#find (; 67 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/map/Map#find (; 205 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) (local $3 i32) local.get $0 i32.load @@ -6338,17 +14108,15 @@ i32.eqz br_if $break|0 local.get $3 - i32.load offset=8 + i32.load offset=16 i32.const 1 i32.and i32.eqz if (result i32) local.get $3 - i32.load16_u + i64.load local.get $1 - i32.const 65535 - i32.and - i32.eq + i64.eq else i32.const 0 end @@ -6357,7 +14125,7 @@ return end local.get $3 - i32.load offset=8 + i32.load offset=16 i32.const 1 i32.const -1 i32.xor @@ -6369,24 +14137,7 @@ end i32.const 0 ) - (func $~lib/map/Map#has (; 68 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.0 (result i32) - local.get $1 - local.set $2 - local.get $2 - i32.const 65535 - i32.and - call $~lib/util/hash/hash16 - br $~lib/util/hash/HASH|inlined.0 - end - call $~lib/map/Map#find - i32.const 0 - i32.ne - ) - (func $~lib/map/Map#rehash (; 69 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 206 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -6396,8 +14147,9 @@ (local $8 i32) (local $9 i32) (local $10 i32) - (local $11 i32) + (local $11 i64) (local $12 i32) + (local $13 i32) local.get $1 i32.const 1 i32.add @@ -6416,7 +14168,7 @@ local.set $4 i32.const 0 local.get $4 - i32.const 12 + i32.const 24 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor local.set $5 @@ -6426,7 +14178,7 @@ local.get $6 local.get $0 i32.load offset=16 - i32.const 12 + i32.const 24 i32.mul i32.add local.set $7 @@ -6442,7 +14194,7 @@ local.get $6 local.set $9 local.get $9 - i32.load offset=8 + i32.load offset=16 i32.const 1 i32.and i32.eqz @@ -6451,43 +14203,43 @@ local.set $10 local.get $10 local.get $9 - i32.load16_u - i32.store16 + i64.load + i64.store local.get $10 local.get $9 - i32.load offset=4 - i32.store offset=4 - block $~lib/util/hash/HASH|inlined.2 (result i32) + i64.load offset=8 + i64.store offset=8 + block $~lib/util/hash/HASH|inlined.5 (result i32) local.get $9 - i32.load16_u + i64.load local.set $11 local.get $11 - call $~lib/util/hash/hash16 - br $~lib/util/hash/HASH|inlined.2 + call $~lib/util/hash/hash64 + br $~lib/util/hash/HASH|inlined.5 end local.get $1 i32.and - local.set $11 + local.set $12 local.get $3 - local.get $11 + local.get $12 i32.const 4 i32.mul i32.add - local.set $12 + local.set $13 local.get $10 - local.get $12 + local.get $13 i32.load - i32.store offset=8 - local.get $12 + i32.store offset=16 + local.get $13 local.get $8 i32.store local.get $8 - i32.const 12 + i32.const 24 i32.add local.set $8 end local.get $6 - i32.const 12 + i32.const 24 i32.add local.set $6 br $continue|0 @@ -6500,13 +14252,13 @@ local.tee $10 local.get $9 i32.load - local.tee $12 + local.tee $13 i32.ne if local.get $10 call $~lib/rt/pure/__retain local.set $10 - local.get $12 + local.get $13 call $~lib/rt/pure/__release end local.get $10 @@ -6517,19 +14269,19 @@ local.get $0 local.tee $9 local.get $5 - local.tee $11 + local.tee $12 local.get $9 i32.load offset=8 local.tee $10 i32.ne if - local.get $11 + local.get $12 call $~lib/rt/pure/__retain - local.set $11 + local.set $12 local.get $10 call $~lib/rt/pure/__release end - local.get $11 + local.get $12 i32.store offset=8 local.get $0 local.get $4 @@ -6543,31 +14295,30 @@ local.get $5 call $~lib/rt/pure/__release ) - (func $~lib/map/Map#set (; 70 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) + (func $~lib/map/Map#set (; 207 ;) (type $FUNCSIG$vijj) (param $0 i32) (param $1 i64) (param $2 i64) + (local $3 i64) (local $4 i32) (local $5 i32) (local $6 i32) - block $~lib/util/hash/HASH|inlined.1 (result i32) + (local $7 i32) + block $~lib/util/hash/HASH|inlined.4 (result i32) local.get $1 local.set $3 local.get $3 - i32.const 65535 - i32.and - call $~lib/util/hash/hash16 - br $~lib/util/hash/HASH|inlined.1 + call $~lib/util/hash/hash64 + br $~lib/util/hash/HASH|inlined.4 end local.set $4 local.get $0 local.get $1 local.get $4 - call $~lib/map/Map#find + call $~lib/map/Map#find local.set $5 local.get $5 if local.get $5 local.get $2 - i32.store offset=4 + i64.store offset=8 else local.get $0 i32.load offset=16 @@ -6596,31 +14347,31 @@ i32.const 1 i32.or end - call $~lib/map/Map#rehash + call $~lib/map/Map#rehash end local.get $0 i32.load offset=8 call $~lib/rt/pure/__retain - local.set $3 - local.get $3 + local.set $6 + local.get $6 local.get $0 local.get $0 i32.load offset=16 - local.tee $6 + local.tee $7 i32.const 1 i32.add i32.store offset=16 - local.get $6 - i32.const 12 + local.get $7 + i32.const 24 i32.mul i32.add local.set $5 local.get $5 local.get $1 - i32.store16 + i64.store local.get $5 local.get $2 - i32.store offset=4 + i64.store offset=8 local.get $0 local.get $0 i32.load offset=20 @@ -6636,68 +14387,38 @@ i32.const 4 i32.mul i32.add - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.load - i32.store offset=8 - local.get $6 + i32.store offset=16 + local.get $7 local.get $5 i32.store - local.get $3 + local.get $6 call $~lib/rt/pure/__release end ) - (func $~lib/map/Map#get (; 71 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.3 (result i32) - local.get $1 - local.set $2 - local.get $2 - i32.const 65535 - i32.and - call $~lib/util/hash/hash16 - br $~lib/util/hash/HASH|inlined.3 - end - call $~lib/map/Map#find - local.set $3 - local.get $3 - i32.eqz - if - i32.const 416 - i32.const 472 - i32.const 111 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.load offset=4 - ) - (func $~lib/map/Map#get:size (; 72 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map#get:size (; 208 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=20 ) - (func $~lib/map/Map#delete (; 73 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/map/Map#delete (; 209 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) + (local $2 i64) (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) local.get $0 local.get $1 - block $~lib/util/hash/HASH|inlined.4 (result i32) + block $~lib/util/hash/HASH|inlined.6 (result i32) local.get $1 local.set $2 local.get $2 - i32.const 65535 - i32.and - call $~lib/util/hash/hash16 - br $~lib/util/hash/HASH|inlined.4 + call $~lib/util/hash/hash64 + br $~lib/util/hash/HASH|inlined.6 end - call $~lib/map/Map#find + call $~lib/map/Map#find local.set $3 local.get $3 i32.eqz @@ -6707,10 +14428,10 @@ end local.get $3 local.get $3 - i32.load offset=8 + i32.load offset=12 i32.const 1 i32.or - i32.store offset=8 + i32.store offset=12 local.get $0 local.get $0 i32.load offset=20 @@ -6726,12 +14447,12 @@ i32.const 1 i32.add i32.const 4 - local.tee $2 + local.tee $5 local.get $0 i32.load offset=20 - local.tee $5 - local.get $2 + local.tee $6 local.get $5 + local.get $6 i32.gt_u select i32.ge_u @@ -6751,28 +14472,34 @@ if local.get $0 local.get $4 - call $~lib/map/Map#rehash + call $~lib/map/Map#rehash end i32.const 1 ) - (func $std/map/testNumeric (; 74 ;) (type $FUNCSIG$v) + (func $std/map/testNumeric (; 210 ;) (type $FUNCSIG$v) (local $0 i32) - (local $1 i32) + (local $1 i64) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) i32.const 0 - call $~lib/map/Map#constructor + call $~lib/map/Map#constructor local.set $0 block $break|0 - i32.const 0 + i64.const 0 local.set $1 loop $loop|0 local.get $1 - i32.const 100 - i32.lt_u + i64.const 100 + i64.lt_s i32.eqz br_if $break|0 local.get $0 local.get $1 - call $~lib/map/Map#has + call $~lib/map/Map#has i32.eqz i32.eqz if @@ -6787,13 +14514,12 @@ local.get $1 i32.const 10 local.get $1 - i32.const 65535 - i32.and + i32.wrap_i64 i32.add - call $~lib/map/Map#set + call $~lib/map/Map#set local.get $0 local.get $1 - call $~lib/map/Map#has + call $~lib/map/Map#has i32.eqz if i32.const 0 @@ -6805,11 +14531,10 @@ end local.get $0 local.get $1 - call $~lib/map/Map#get + call $~lib/map/Map#get i32.const 10 local.get $1 - i32.const 65535 - i32.and + i32.wrap_i64 i32.add i32.eq i32.eqz @@ -6822,15 +14547,15 @@ unreachable end local.get $1 - i32.const 1 - i32.add + i64.const 1 + i64.add local.set $1 br $loop|0 end unreachable end local.get $0 - call $~lib/map/Map#get:size + call $~lib/map/Map#get:size i32.const 100 i32.eq i32.eqz @@ -6843,17 +14568,17 @@ unreachable end block $break|1 - i32.const 0 + i64.const 0 local.set $1 loop $loop|1 local.get $1 - i32.const 100 - i32.lt_u + i64.const 100 + i64.lt_s i32.eqz br_if $break|1 local.get $0 local.get $1 - call $~lib/map/Map#has + call $~lib/map/Map#has i32.eqz if i32.const 0 @@ -6865,11 +14590,10 @@ end local.get $0 local.get $1 - call $~lib/map/Map#get + call $~lib/map/Map#get i32.const 10 local.get $1 - i32.const 65535 - i32.and + i32.wrap_i64 i32.add i32.eq i32.eqz @@ -6881,160 +14605,260 @@ call $~lib/builtins/abort unreachable end - local.get $0 - local.get $1 - i32.const 20 + local.get $0 + local.get $1 + i32.const 20 + local.get $1 + i32.wrap_i64 + i32.add + call $~lib/map/Map#set + local.get $0 + local.get $1 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 18 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/map/Map#get + i32.const 20 + local.get $1 + i32.wrap_i64 + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 19 + i32.const 4 + call $~lib/builtins/abort + unreachable + end local.get $1 - i32.const 65535 - i32.and - i32.add - call $~lib/map/Map#set + i64.const 1 + i64.add + local.set $1 + br $loop|1 + end + unreachable + end + local.get $0 + call $~lib/map/Map#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 21 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/map/Map#keys + local.set $2 + local.get $0 + call $~lib/map/Map#values + local.set $3 + i32.const 0 + call $~lib/map/Map#constructor + local.set $4 + i32.const 0 + call $~lib/map/Map#constructor + local.set $5 + block $break|2 + i32.const 0 + local.set $6 + loop $loop|2 + local.get $6 + local.get $2 + call $~lib/array/Array#get:length + i32.lt_s + i32.eqz + br_if $break|2 + local.get $2 + local.get $6 + call $~lib/array/Array#__get + local.set $1 + local.get $3 + local.get $6 + call $~lib/array/Array#__get + local.set $7 local.get $0 local.get $1 - call $~lib/map/Map#has + call $~lib/map/Map#has i32.eqz if i32.const 0 i32.const 376 - i32.const 18 + i32.const 31 i32.const 4 call $~lib/builtins/abort unreachable end local.get $0 - local.get $1 - call $~lib/map/Map#get + local.get $7 i32.const 20 - local.get $1 - i32.const 65535 - i32.and - i32.add - i32.eq + i32.sub + i64.extend_i32_s + call $~lib/map/Map#has i32.eqz if i32.const 0 i32.const 376 - i32.const 19 + i32.const 32 i32.const 4 call $~lib/builtins/abort unreachable end + local.get $4 local.get $1 + local.get $1 + call $~lib/map/Map#set + local.get $5 + local.get $7 + i32.const 20 + i32.sub + local.get $7 + i32.const 20 + i32.sub + call $~lib/map/Map#set + local.get $6 i32.const 1 i32.add - local.set $1 - br $loop|1 + local.set $6 + br $loop|2 end unreachable end - local.get $0 - call $~lib/map/Map#get:size + local.get $4 + call $~lib/map/Map#get:size i32.const 100 i32.eq i32.eqz if i32.const 0 i32.const 376 - i32.const 21 + i32.const 36 i32.const 2 call $~lib/builtins/abort unreachable end - block $break|2 + local.get $5 + call $~lib/map/Map#get:size + i32.const 100 + i32.eq + i32.eqz + if i32.const 0 + i32.const 376 + i32.const 37 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + block $break|3 + i64.const 0 local.set $1 - loop $loop|2 + loop $loop|3 local.get $1 - i32.const 50 - i32.lt_u + i64.const 50 + i64.lt_s i32.eqz - br_if $break|2 + br_if $break|3 local.get $0 local.get $1 - call $~lib/map/Map#has + call $~lib/map/Map#has i32.eqz if i32.const 0 i32.const 376 - i32.const 25 + i32.const 41 i32.const 4 call $~lib/builtins/abort unreachable end local.get $0 local.get $1 - call $~lib/map/Map#get + call $~lib/map/Map#get i32.const 20 local.get $1 - i32.const 65535 - i32.and + i32.wrap_i64 i32.add i32.eq i32.eqz if i32.const 0 i32.const 376 - i32.const 26 + i32.const 42 i32.const 4 call $~lib/builtins/abort unreachable end local.get $0 local.get $1 - call $~lib/map/Map#delete + call $~lib/map/Map#delete drop local.get $0 local.get $1 - call $~lib/map/Map#has + call $~lib/map/Map#has i32.eqz i32.eqz if i32.const 0 i32.const 376 - i32.const 28 + i32.const 44 i32.const 4 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 1 - i32.add + i64.const 1 + i64.add local.set $1 - br $loop|2 + br $loop|3 end unreachable end local.get $0 - call $~lib/map/Map#get:size + call $~lib/map/Map#get:size i32.const 50 i32.eq i32.eqz if i32.const 0 i32.const 376 - i32.const 30 + i32.const 46 i32.const 2 call $~lib/builtins/abort unreachable end - block $break|3 - i32.const 0 + block $break|4 + i64.const 0 local.set $1 - loop $loop|3 + loop $loop|4 local.get $1 - i32.const 50 - i32.lt_u + i64.const 50 + i64.lt_s i32.eqz - br_if $break|3 + br_if $break|4 local.get $0 local.get $1 - call $~lib/map/Map#has + call $~lib/map/Map#has i32.eqz i32.eqz if i32.const 0 i32.const 376 - i32.const 34 + i32.const 50 i32.const 4 call $~lib/builtins/abort unreachable @@ -7043,79 +14867,86 @@ local.get $1 i32.const 10 local.get $1 - i32.const 65535 - i32.and + i32.wrap_i64 i32.add - call $~lib/map/Map#set + call $~lib/map/Map#set local.get $0 local.get $1 - call $~lib/map/Map#has + call $~lib/map/Map#has i32.eqz if i32.const 0 i32.const 376 - i32.const 36 + i32.const 52 i32.const 4 call $~lib/builtins/abort unreachable end local.get $0 local.get $1 - call $~lib/map/Map#delete + call $~lib/map/Map#delete drop local.get $0 local.get $1 - call $~lib/map/Map#has + call $~lib/map/Map#has i32.eqz i32.eqz if i32.const 0 i32.const 376 - i32.const 38 + i32.const 54 i32.const 4 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 1 - i32.add + i64.const 1 + i64.add local.set $1 - br $loop|3 + br $loop|4 end unreachable end local.get $0 - call $~lib/map/Map#get:size + call $~lib/map/Map#get:size i32.const 50 i32.eq i32.eqz if i32.const 0 i32.const 376 - i32.const 40 + i32.const 56 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - call $~lib/map/Map#clear + call $~lib/map/Map#clear local.get $0 - call $~lib/map/Map#get:size + call $~lib/map/Map#get:size i32.const 0 i32.eq i32.eqz if i32.const 0 i32.const 376 - i32.const 44 + i32.const 60 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $2 + call $~lib/rt/pure/__release + local.get $3 + call $~lib/rt/pure/__release + local.get $4 + call $~lib/rt/pure/__release + local.get $5 + call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/map/Map#clear (; 75 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/map/Map#clear (; 211 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 @@ -7137,7 +14968,7 @@ local.get $0 local.tee $1 i32.const 0 - i32.const 48 + i32.const 64 call $~lib/arraybuffer/ArrayBuffer#constructor local.set $2 local.get $1 @@ -7155,12 +14986,12 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/map/Map#constructor (; 76 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map#constructor (; 212 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if i32.const 24 - i32.const 7 + i32.const 23 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain local.set $0 @@ -7184,52 +15015,10 @@ i32.const 0 i32.store offset=20 local.get $0 - call $~lib/map/Map#clear - local.get $0 - ) - (func $~lib/util/hash/hash32 (; 77 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - i32.const -2128831035 - local.set $1 - local.get $1 - local.get $0 - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.set $1 - local.get $1 - local.get $0 - i32.const 8 - i32.shr_u - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.set $1 - local.get $1 - local.get $0 - i32.const 16 - i32.shr_u - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.set $1 - local.get $1 + call $~lib/map/Map#clear local.get $0 - i32.const 24 - i32.shr_u - i32.xor - i32.const 16777619 - i32.mul - local.set $1 - local.get $1 ) - (func $~lib/map/Map#find (; 78 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/map/Map#find (; 213 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) (local $3 i32) local.get $0 i32.load @@ -7248,15 +15037,15 @@ i32.eqz br_if $break|0 local.get $3 - i32.load offset=8 + i32.load offset=12 i32.const 1 i32.and i32.eqz if (result i32) local.get $3 - i32.load + i64.load local.get $1 - i32.eq + i64.eq else i32.const 0 end @@ -7265,7 +15054,7 @@ return end local.get $3 - i32.load offset=8 + i32.load offset=12 i32.const 1 i32.const -1 i32.xor @@ -7277,22 +15066,22 @@ end i32.const 0 ) - (func $~lib/map/Map#has (; 79 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/map/Map#has (; 214 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) + (local $2 i64) local.get $0 local.get $1 - block $~lib/util/hash/HASH|inlined.0 (result i32) + block $~lib/util/hash/HASH|inlined.0 (result i32) local.get $1 local.set $2 local.get $2 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.0 + call $~lib/util/hash/hash64 + br $~lib/util/hash/HASH|inlined.0 end - call $~lib/map/Map#find + call $~lib/map/Map#find i32.const 0 i32.ne ) - (func $~lib/map/Map#rehash (; 80 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 215 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -7302,8 +15091,9 @@ (local $8 i32) (local $9 i32) (local $10 i32) - (local $11 i32) + (local $11 i64) (local $12 i32) + (local $13 i32) local.get $1 i32.const 1 i32.add @@ -7322,7 +15112,7 @@ local.set $4 i32.const 0 local.get $4 - i32.const 12 + i32.const 16 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor local.set $5 @@ -7332,7 +15122,7 @@ local.get $6 local.get $0 i32.load offset=16 - i32.const 12 + i32.const 16 i32.mul i32.add local.set $7 @@ -7348,7 +15138,7 @@ local.get $6 local.set $9 local.get $9 - i32.load offset=8 + i32.load offset=12 i32.const 1 i32.and i32.eqz @@ -7357,43 +15147,43 @@ local.set $10 local.get $10 local.get $9 - i32.load - i32.store + i64.load + i64.store local.get $10 local.get $9 - i32.load offset=4 - i32.store offset=4 - block $~lib/util/hash/HASH|inlined.2 (result i32) + i32.load offset=8 + i32.store offset=8 + block $~lib/util/hash/HASH|inlined.2 (result i32) local.get $9 - i32.load + i64.load local.set $11 local.get $11 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.2 + call $~lib/util/hash/hash64 + br $~lib/util/hash/HASH|inlined.2 end local.get $1 i32.and - local.set $11 + local.set $12 local.get $3 - local.get $11 + local.get $12 i32.const 4 i32.mul i32.add - local.set $12 + local.set $13 local.get $10 - local.get $12 + local.get $13 i32.load - i32.store offset=8 - local.get $12 + i32.store offset=12 + local.get $13 local.get $8 i32.store local.get $8 - i32.const 12 + i32.const 16 i32.add local.set $8 end local.get $6 - i32.const 12 + i32.const 16 i32.add local.set $6 br $continue|0 @@ -7406,13 +15196,13 @@ local.tee $10 local.get $9 i32.load - local.tee $12 + local.tee $13 i32.ne if local.get $10 call $~lib/rt/pure/__retain local.set $10 - local.get $12 + local.get $13 call $~lib/rt/pure/__release end local.get $10 @@ -7423,19 +15213,19 @@ local.get $0 local.tee $9 local.get $5 - local.tee $11 + local.tee $12 local.get $9 i32.load offset=8 local.tee $10 i32.ne if - local.get $11 + local.get $12 call $~lib/rt/pure/__retain - local.set $11 + local.set $12 local.get $10 call $~lib/rt/pure/__release end - local.get $11 + local.get $12 i32.store offset=8 local.get $0 local.get $4 @@ -7449,29 +15239,30 @@ local.get $5 call $~lib/rt/pure/__release ) - (func $~lib/map/Map#set (; 81 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) + (func $~lib/map/Map#set (; 216 ;) (type $FUNCSIG$viji) (param $0 i32) (param $1 i64) (param $2 i32) + (local $3 i64) (local $4 i32) (local $5 i32) (local $6 i32) - block $~lib/util/hash/HASH|inlined.1 (result i32) + (local $7 i32) + block $~lib/util/hash/HASH|inlined.1 (result i32) local.get $1 local.set $3 local.get $3 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.1 + call $~lib/util/hash/hash64 + br $~lib/util/hash/HASH|inlined.1 end local.set $4 local.get $0 local.get $1 local.get $4 - call $~lib/map/Map#find + call $~lib/map/Map#find local.set $5 local.get $5 if local.get $5 local.get $2 - i32.store offset=4 + i32.store offset=8 else local.get $0 i32.load offset=16 @@ -7495,513 +15286,300 @@ else local.get $0 i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/map/Map#rehash - end - local.get $0 - i32.load offset=8 - call $~lib/rt/pure/__retain - local.set $3 - local.get $3 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $6 - i32.const 1 - i32.add - i32.store offset=16 - local.get $6 - i32.const 12 - i32.mul - i32.add - local.set $5 - local.get $5 - local.get $1 - i32.store - local.get $5 - local.get $2 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $0 - i32.load - local.get $4 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - local.set $6 - local.get $5 - local.get $6 - i32.load - i32.store offset=8 - local.get $6 - local.get $5 - i32.store - local.get $3 - call $~lib/rt/pure/__release - end - ) - (func $~lib/map/Map#get (; 82 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.3 (result i32) - local.get $1 - local.set $2 - local.get $2 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.3 - end - call $~lib/map/Map#find - local.set $3 - local.get $3 - i32.eqz - if - i32.const 416 - i32.const 472 - i32.const 111 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.load offset=4 - ) - (func $~lib/map/Map#get:size (; 83 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.load offset=20 - ) - (func $~lib/map/Map#delete (; 84 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.4 (result i32) - local.get $1 - local.set $2 - local.get $2 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.4 - end - call $~lib/map/Map#find - local.set $3 - local.get $3 - i32.eqz - if - i32.const 0 - return - end - local.get $3 - local.get $3 - i32.load offset=8 - i32.const 1 - i32.or - i32.store offset=8 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.set $4 - local.get $4 - i32.const 1 - i32.add - i32.const 4 - local.tee $2 - local.get $0 - i32.load offset=20 - local.tee $5 - local.get $2 - local.get $5 - i32.gt_u - select - i32.ge_u - if (result i32) - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - else - i32.const 0 - end - if - local.get $0 - local.get $4 - call $~lib/map/Map#rehash - end - i32.const 1 - ) - (func $std/map/testNumeric (; 85 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 i32) - i32.const 0 - call $~lib/map/Map#constructor - local.set $0 - block $break|0 - i32.const 0 - local.set $1 - loop $loop|0 - local.get $1 - i32.const 100 - i32.lt_s - i32.eqz - br_if $break|0 - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 6 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 10 - local.get $1 - i32.add - call $~lib/map/Map#set - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 8 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 10 - local.get $1 - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 9 - i32.const 4 - call $~lib/builtins/abort - unreachable + i32.const 1 + i32.shl + i32.const 1 + i32.or end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $loop|0 + call $~lib/map/Map#rehash end - unreachable + local.get $0 + i32.load offset=8 + call $~lib/rt/pure/__retain + local.set $6 + local.get $6 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $7 + i32.const 1 + i32.add + i32.store offset=16 + local.get $7 + i32.const 16 + i32.mul + i32.add + local.set $5 + local.get $5 + local.get $1 + i64.store + local.get $5 + local.get $2 + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + local.get $0 + i32.load + local.get $4 + local.get $0 + i32.load offset=4 + i32.and + i32.const 4 + i32.mul + i32.add + local.set $7 + local.get $5 + local.get $7 + i32.load + i32.store offset=12 + local.get $7 + local.get $5 + i32.store + local.get $6 + call $~lib/rt/pure/__release end + ) + (func $~lib/map/Map#get (; 217 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) + (local $2 i64) + (local $3 i32) local.get $0 - call $~lib/map/Map#get:size - i32.const 100 - i32.eq + local.get $1 + block $~lib/util/hash/HASH|inlined.3 (result i32) + local.get $1 + local.set $2 + local.get $2 + call $~lib/util/hash/hash64 + br $~lib/util/hash/HASH|inlined.3 + end + call $~lib/map/Map#find + local.set $3 + local.get $3 i32.eqz if - i32.const 0 - i32.const 376 - i32.const 11 - i32.const 2 + i32.const 416 + i32.const 472 + i32.const 111 + i32.const 16 call $~lib/builtins/abort unreachable end - block $break|1 - i32.const 0 - local.set $1 - loop $loop|1 - local.get $1 - i32.const 100 - i32.lt_s - i32.eqz - br_if $break|1 - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 15 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 10 - local.get $1 - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 16 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 20 - local.get $1 - i32.add - call $~lib/map/Map#set - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 18 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 20 - local.get $1 - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 19 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $loop|1 - end - unreachable + local.get $3 + i32.load offset=8 + ) + (func $~lib/map/Map#get:size (; 218 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=20 + ) + (func $~lib/array/Array#constructor (; 219 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + if (result i32) + local.get $0 + else + i32.const 16 + i32.const 24 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain end + local.get $1 + i32.const 3 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.set $0 local.get $0 - call $~lib/map/Map#get:size - i32.const 100 - i32.eq - i32.eqz + i32.const 0 + i32.store offset=12 + local.get $0 + local.get $1 + i32.store offset=12 + local.get $0 + ) + (func $~lib/array/Array#__unchecked_set (; 220 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.get $2 + i64.store + ) + (func $~lib/array/Array#__set (; 221 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u if + local.get $1 i32.const 0 - i32.const 376 - i32.const 21 - i32.const 2 - call $~lib/builtins/abort - unreachable + i32.lt_s + if + i32.const 280 + i32.const 512 + i32.const 109 + i32.const 21 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.const 3 + call $~lib/array/ensureSize + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.store offset=12 end - block $break|2 + local.get $0 + local.get $1 + local.get $2 + call $~lib/array/Array#__unchecked_set + ) + (func $~lib/array/Array#set:length (; 222 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + i32.load offset=12 + local.set $2 + local.get $0 + local.get $1 + i32.const 3 + call $~lib/array/ensureSize + local.get $0 + local.get $1 + i32.store offset=12 + ) + (func $~lib/map/Map#keys (; 223 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.load offset=8 + local.set $1 + local.get $0 + i32.load offset=16 + local.set $2 + i32.const 0 + local.get $2 + call $~lib/array/Array#constructor + local.set $3 + i32.const 0 + local.set $4 + block $break|0 i32.const 0 - local.set $1 - loop $loop|2 - local.get $1 - i32.const 50 + local.set $5 + loop $loop|0 + local.get $5 + local.get $2 i32.lt_s i32.eqz - br_if $break|2 - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 25 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 20 + br_if $break|0 local.get $1 + local.get $5 + i32.const 16 + i32.mul i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 26 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#delete - drop - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz + local.set $6 + local.get $6 + i32.load offset=12 + i32.const 1 + i32.and i32.eqz if - i32.const 0 - i32.const 376 - i32.const 28 - i32.const 4 - call $~lib/builtins/abort - unreachable + local.get $3 + local.get $4 + local.get $6 + i64.load + call $~lib/array/Array#__set + local.get $4 + i32.const 1 + i32.add + local.set $4 end - local.get $1 + local.get $5 i32.const 1 i32.add - local.set $1 - br $loop|2 + local.set $5 + br $loop|0 end unreachable end + local.get $3 + local.get $4 + call $~lib/array/Array#set:length + local.get $3 + ) + (func $~lib/map/Map#values (; 224 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) local.get $0 - call $~lib/map/Map#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 30 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block $break|3 + i32.load offset=8 + local.set $1 + local.get $0 + i32.load offset=16 + local.set $2 + i32.const 0 + local.get $2 + call $~lib/array/Array#constructor + local.set $3 + i32.const 0 + local.set $4 + block $break|0 i32.const 0 - local.set $1 - loop $loop|3 - local.get $1 - i32.const 50 + local.set $5 + loop $loop|0 + local.get $5 + local.get $2 i32.lt_s i32.eqz - br_if $break|3 - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 34 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 10 + br_if $break|0 local.get $1 + local.get $5 + i32.const 16 + i32.mul i32.add - call $~lib/map/Map#set - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 36 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#delete - drop - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz + local.set $6 + local.get $6 + i32.load offset=12 + i32.const 1 + i32.and i32.eqz if - i32.const 0 - i32.const 376 - i32.const 38 - i32.const 4 - call $~lib/builtins/abort - unreachable + local.get $3 + local.get $6 + i32.load offset=8 + call $~lib/array/Array#push + drop + local.get $4 + i32.const 1 + i32.add + local.set $4 end - local.get $1 + local.get $5 i32.const 1 i32.add - local.set $1 - br $loop|3 + local.set $5 + br $loop|0 end unreachable end - local.get $0 - call $~lib/map/Map#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 40 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/map/Map#clear - local.get $0 - call $~lib/map/Map#get:size - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 44 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release + local.get $3 + local.get $4 + call $~lib/array/Array#set:length + local.get $3 ) - (func $~lib/map/Map#clear (; 86 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/map/Map#clear (; 225 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 @@ -8023,7 +15601,7 @@ local.get $0 local.tee $1 i32.const 0 - i32.const 48 + i32.const 96 call $~lib/arraybuffer/ArrayBuffer#constructor local.set $2 local.get $1 @@ -8041,12 +15619,12 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/map/Map#constructor (; 87 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map#constructor (; 226 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if i32.const 24 - i32.const 8 + i32.const 25 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain local.set $0 @@ -8070,10 +15648,43 @@ i32.const 0 i32.store offset=20 local.get $0 - call $~lib/map/Map#clear + call $~lib/map/Map#clear + local.get $0 + ) + (func $~lib/array/Array#get:length (; 227 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=12 + ) + (func $~lib/array/Array#__unchecked_get (; 228 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 3 + i32.shl + i32.add + i64.load + ) + (func $~lib/array/Array#__get (; 229 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) + (local $2 i64) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 280 + i32.const 512 + i32.const 93 + i32.const 41 + call $~lib/builtins/abort + unreachable + end local.get $0 + local.get $1 + call $~lib/array/Array#__unchecked_get + local.set $2 + local.get $2 ) - (func $~lib/map/Map#find (; 88 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/map/Map#find (; 230 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) (local $3 i32) local.get $0 i32.load @@ -8092,15 +15703,15 @@ i32.eqz br_if $break|0 local.get $3 - i32.load offset=8 + i32.load offset=16 i32.const 1 i32.and i32.eqz if (result i32) local.get $3 - i32.load + i64.load local.get $1 - i32.eq + i64.eq else i32.const 0 end @@ -8109,34 +15720,19 @@ return end local.get $3 - i32.load offset=8 - i32.const 1 - i32.const -1 - i32.xor - i32.and - local.set $3 - br $continue|0 - end - unreachable - end - i32.const 0 - ) - (func $~lib/map/Map#has (; 89 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.0 (result i32) - local.get $1 - local.set $2 - local.get $2 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.0 + i32.load offset=16 + i32.const 1 + i32.const -1 + i32.xor + i32.and + local.set $3 + br $continue|0 + end + unreachable end - call $~lib/map/Map#find i32.const 0 - i32.ne ) - (func $~lib/map/Map#rehash (; 90 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 231 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8146,8 +15742,9 @@ (local $8 i32) (local $9 i32) (local $10 i32) - (local $11 i32) + (local $11 i64) (local $12 i32) + (local $13 i32) local.get $1 i32.const 1 i32.add @@ -8166,7 +15763,7 @@ local.set $4 i32.const 0 local.get $4 - i32.const 12 + i32.const 24 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor local.set $5 @@ -8176,7 +15773,7 @@ local.get $6 local.get $0 i32.load offset=16 - i32.const 12 + i32.const 24 i32.mul i32.add local.set $7 @@ -8192,7 +15789,7 @@ local.get $6 local.set $9 local.get $9 - i32.load offset=8 + i32.load offset=16 i32.const 1 i32.and i32.eqz @@ -8201,43 +15798,43 @@ local.set $10 local.get $10 local.get $9 - i32.load - i32.store + i64.load + i64.store local.get $10 local.get $9 - i32.load offset=4 - i32.store offset=4 - block $~lib/util/hash/HASH|inlined.2 (result i32) + i64.load offset=8 + i64.store offset=8 + block $~lib/util/hash/HASH|inlined.5 (result i32) local.get $9 - i32.load + i64.load local.set $11 local.get $11 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.2 + call $~lib/util/hash/hash64 + br $~lib/util/hash/HASH|inlined.5 end local.get $1 i32.and - local.set $11 + local.set $12 local.get $3 - local.get $11 + local.get $12 i32.const 4 i32.mul i32.add - local.set $12 + local.set $13 local.get $10 - local.get $12 + local.get $13 i32.load - i32.store offset=8 - local.get $12 + i32.store offset=16 + local.get $13 local.get $8 i32.store local.get $8 - i32.const 12 + i32.const 24 i32.add local.set $8 end local.get $6 - i32.const 12 + i32.const 24 i32.add local.set $6 br $continue|0 @@ -8250,13 +15847,13 @@ local.tee $10 local.get $9 i32.load - local.tee $12 + local.tee $13 i32.ne if local.get $10 call $~lib/rt/pure/__retain local.set $10 - local.get $12 + local.get $13 call $~lib/rt/pure/__release end local.get $10 @@ -8267,19 +15864,19 @@ local.get $0 local.tee $9 local.get $5 - local.tee $11 + local.tee $12 local.get $9 i32.load offset=8 local.tee $10 i32.ne if - local.get $11 + local.get $12 call $~lib/rt/pure/__retain - local.set $11 + local.set $12 local.get $10 call $~lib/rt/pure/__release end - local.get $11 + local.get $12 i32.store offset=8 local.get $0 local.get $4 @@ -8293,29 +15890,30 @@ local.get $5 call $~lib/rt/pure/__release ) - (func $~lib/map/Map#set (; 91 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) + (func $~lib/map/Map#set (; 232 ;) (type $FUNCSIG$vijj) (param $0 i32) (param $1 i64) (param $2 i64) + (local $3 i64) (local $4 i32) (local $5 i32) (local $6 i32) - block $~lib/util/hash/HASH|inlined.1 (result i32) + (local $7 i32) + block $~lib/util/hash/HASH|inlined.4 (result i32) local.get $1 local.set $3 local.get $3 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.1 + call $~lib/util/hash/hash64 + br $~lib/util/hash/HASH|inlined.4 end local.set $4 local.get $0 local.get $1 local.get $4 - call $~lib/map/Map#find + call $~lib/map/Map#find local.set $5 local.get $5 if local.get $5 local.get $2 - i32.store offset=4 + i64.store offset=8 else local.get $0 i32.load offset=16 @@ -8344,31 +15942,31 @@ i32.const 1 i32.or end - call $~lib/map/Map#rehash + call $~lib/map/Map#rehash end local.get $0 i32.load offset=8 call $~lib/rt/pure/__retain - local.set $3 - local.get $3 + local.set $6 + local.get $6 local.get $0 local.get $0 i32.load offset=16 - local.tee $6 + local.tee $7 i32.const 1 i32.add i32.store offset=16 - local.get $6 - i32.const 12 + local.get $7 + i32.const 24 i32.mul i32.add local.set $5 local.get $5 local.get $1 - i32.store + i64.store local.get $5 local.get $2 - i32.store offset=4 + i64.store offset=8 local.get $0 local.get $0 i32.load offset=20 @@ -8384,64 +15982,38 @@ i32.const 4 i32.mul i32.add - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.load - i32.store offset=8 - local.get $6 + i32.store offset=16 + local.get $7 local.get $5 i32.store - local.get $3 + local.get $6 call $~lib/rt/pure/__release end ) - (func $~lib/map/Map#get (; 92 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.3 (result i32) - local.get $1 - local.set $2 - local.get $2 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.3 - end - call $~lib/map/Map#find - local.set $3 - local.get $3 - i32.eqz - if - i32.const 416 - i32.const 472 - i32.const 111 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.load offset=4 - ) - (func $~lib/map/Map#get:size (; 93 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map#get:size (; 233 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=20 ) - (func $~lib/map/Map#delete (; 94 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/map/Map#delete (; 234 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) + (local $2 i64) (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) local.get $0 local.get $1 - block $~lib/util/hash/HASH|inlined.4 (result i32) + block $~lib/util/hash/HASH|inlined.6 (result i32) local.get $1 local.set $2 local.get $2 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.4 + call $~lib/util/hash/hash64 + br $~lib/util/hash/HASH|inlined.6 end - call $~lib/map/Map#find + call $~lib/map/Map#find local.set $3 local.get $3 i32.eqz @@ -8451,10 +16023,10 @@ end local.get $3 local.get $3 - i32.load offset=8 + i32.load offset=12 i32.const 1 i32.or - i32.store offset=8 + i32.store offset=12 local.get $0 local.get $0 i32.load offset=20 @@ -8470,12 +16042,12 @@ i32.const 1 i32.add i32.const 4 - local.tee $2 + local.tee $5 local.get $0 i32.load offset=20 - local.tee $5 - local.get $2 + local.tee $6 local.get $5 + local.get $6 i32.gt_u select i32.ge_u @@ -8495,28 +16067,34 @@ if local.get $0 local.get $4 - call $~lib/map/Map#rehash + call $~lib/map/Map#rehash end i32.const 1 ) - (func $std/map/testNumeric (; 95 ;) (type $FUNCSIG$v) + (func $std/map/testNumeric (; 235 ;) (type $FUNCSIG$v) (local $0 i32) - (local $1 i32) + (local $1 i64) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) i32.const 0 - call $~lib/map/Map#constructor + call $~lib/map/Map#constructor local.set $0 block $break|0 - i32.const 0 + i64.const 0 local.set $1 loop $loop|0 local.get $1 - i32.const 100 - i32.lt_u + i64.const 100 + i64.lt_u i32.eqz br_if $break|0 local.get $0 local.get $1 - call $~lib/map/Map#has + call $~lib/map/Map#has i32.eqz i32.eqz if @@ -8531,11 +16109,12 @@ local.get $1 i32.const 10 local.get $1 + i32.wrap_i64 i32.add - call $~lib/map/Map#set + call $~lib/map/Map#set local.get $0 local.get $1 - call $~lib/map/Map#has + call $~lib/map/Map#has i32.eqz if i32.const 0 @@ -8547,9 +16126,10 @@ end local.get $0 local.get $1 - call $~lib/map/Map#get + call $~lib/map/Map#get i32.const 10 local.get $1 + i32.wrap_i64 i32.add i32.eq i32.eqz @@ -8562,15 +16142,15 @@ unreachable end local.get $1 - i32.const 1 - i32.add + i64.const 1 + i64.add local.set $1 br $loop|0 end unreachable end local.get $0 - call $~lib/map/Map#get:size + call $~lib/map/Map#get:size i32.const 100 i32.eq i32.eqz @@ -8583,17 +16163,17 @@ unreachable end block $break|1 - i32.const 0 + i64.const 0 local.set $1 loop $loop|1 local.get $1 - i32.const 100 - i32.lt_u + i64.const 100 + i64.lt_u i32.eqz br_if $break|1 local.get $0 local.get $1 - call $~lib/map/Map#has + call $~lib/map/Map#has i32.eqz if i32.const 0 @@ -8605,168 +16185,275 @@ end local.get $0 local.get $1 - call $~lib/map/Map#get + call $~lib/map/Map#get i32.const 10 local.get $1 + i32.wrap_i64 + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 16 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 20 + local.get $1 + i32.wrap_i64 + i32.add + call $~lib/map/Map#set + local.get $0 + local.get $1 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 18 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/map/Map#get + i32.const 20 + local.get $1 + i32.wrap_i64 i32.add i32.eq i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 16 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 20 - local.get $1 - i32.add - call $~lib/map/Map#set + if + i32.const 0 + i32.const 376 + i32.const 19 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i64.const 1 + i64.add + local.set $1 + br $loop|1 + end + unreachable + end + local.get $0 + call $~lib/map/Map#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 21 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/map/Map#keys + local.set $2 + local.get $0 + call $~lib/map/Map#values + local.set $3 + i32.const 0 + call $~lib/map/Map#constructor + local.set $4 + i32.const 0 + call $~lib/map/Map#constructor + local.set $5 + block $break|2 + i32.const 0 + local.set $6 + loop $loop|2 + local.get $6 + local.get $2 + call $~lib/array/Array#get:length + i32.lt_s + i32.eqz + br_if $break|2 + local.get $2 + local.get $6 + call $~lib/array/Array#__get + local.set $1 + local.get $3 + local.get $6 + call $~lib/array/Array#__get + local.set $7 local.get $0 local.get $1 - call $~lib/map/Map#has + call $~lib/map/Map#has i32.eqz if i32.const 0 i32.const 376 - i32.const 18 + i32.const 31 i32.const 4 call $~lib/builtins/abort unreachable end local.get $0 - local.get $1 - call $~lib/map/Map#get + local.get $7 i32.const 20 - local.get $1 - i32.add - i32.eq + i32.sub + i64.extend_i32_s + call $~lib/map/Map#has i32.eqz if i32.const 0 i32.const 376 - i32.const 19 + i32.const 32 i32.const 4 call $~lib/builtins/abort unreachable end + local.get $4 + local.get $1 local.get $1 + call $~lib/map/Map#set + local.get $5 + local.get $7 + i32.const 20 + i32.sub + local.get $7 + i32.const 20 + i32.sub + call $~lib/map/Map#set + local.get $6 i32.const 1 i32.add - local.set $1 - br $loop|1 + local.set $6 + br $loop|2 end unreachable end - local.get $0 - call $~lib/map/Map#get:size + local.get $4 + call $~lib/map/Map#get:size i32.const 100 i32.eq i32.eqz if i32.const 0 i32.const 376 - i32.const 21 + i32.const 36 i32.const 2 call $~lib/builtins/abort unreachable end - block $break|2 + local.get $5 + call $~lib/map/Map#get:size + i32.const 100 + i32.eq + i32.eqz + if i32.const 0 + i32.const 376 + i32.const 37 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + block $break|3 + i64.const 0 local.set $1 - loop $loop|2 + loop $loop|3 local.get $1 - i32.const 50 - i32.lt_u + i64.const 50 + i64.lt_u i32.eqz - br_if $break|2 + br_if $break|3 local.get $0 local.get $1 - call $~lib/map/Map#has + call $~lib/map/Map#has i32.eqz if i32.const 0 i32.const 376 - i32.const 25 + i32.const 41 i32.const 4 call $~lib/builtins/abort unreachable end local.get $0 local.get $1 - call $~lib/map/Map#get + call $~lib/map/Map#get i32.const 20 local.get $1 + i32.wrap_i64 i32.add i32.eq i32.eqz if i32.const 0 i32.const 376 - i32.const 26 + i32.const 42 i32.const 4 call $~lib/builtins/abort unreachable end local.get $0 local.get $1 - call $~lib/map/Map#delete + call $~lib/map/Map#delete drop local.get $0 local.get $1 - call $~lib/map/Map#has + call $~lib/map/Map#has i32.eqz i32.eqz if i32.const 0 i32.const 376 - i32.const 28 + i32.const 44 i32.const 4 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 1 - i32.add + i64.const 1 + i64.add local.set $1 - br $loop|2 + br $loop|3 end unreachable end local.get $0 - call $~lib/map/Map#get:size + call $~lib/map/Map#get:size i32.const 50 i32.eq i32.eqz if i32.const 0 i32.const 376 - i32.const 30 + i32.const 46 i32.const 2 call $~lib/builtins/abort unreachable end - block $break|3 - i32.const 0 + block $break|4 + i64.const 0 local.set $1 - loop $loop|3 + loop $loop|4 local.get $1 - i32.const 50 - i32.lt_u + i64.const 50 + i64.lt_u i32.eqz - br_if $break|3 + br_if $break|4 local.get $0 local.get $1 - call $~lib/map/Map#has + call $~lib/map/Map#has i32.eqz i32.eqz if i32.const 0 i32.const 376 - i32.const 34 + i32.const 50 i32.const 4 call $~lib/builtins/abort unreachable @@ -8775,77 +16462,86 @@ local.get $1 i32.const 10 local.get $1 + i32.wrap_i64 i32.add - call $~lib/map/Map#set + call $~lib/map/Map#set local.get $0 local.get $1 - call $~lib/map/Map#has + call $~lib/map/Map#has i32.eqz if i32.const 0 i32.const 376 - i32.const 36 + i32.const 52 i32.const 4 call $~lib/builtins/abort unreachable end local.get $0 local.get $1 - call $~lib/map/Map#delete + call $~lib/map/Map#delete drop local.get $0 local.get $1 - call $~lib/map/Map#has + call $~lib/map/Map#has i32.eqz i32.eqz if i32.const 0 i32.const 376 - i32.const 38 + i32.const 54 i32.const 4 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 1 - i32.add + i64.const 1 + i64.add local.set $1 - br $loop|3 + br $loop|4 end unreachable end local.get $0 - call $~lib/map/Map#get:size + call $~lib/map/Map#get:size i32.const 50 i32.eq i32.eqz if i32.const 0 i32.const 376 - i32.const 40 + i32.const 56 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - call $~lib/map/Map#clear + call $~lib/map/Map#clear local.get $0 - call $~lib/map/Map#get:size + call $~lib/map/Map#get:size i32.const 0 i32.eq i32.eqz if i32.const 0 i32.const 376 - i32.const 44 + i32.const 60 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $2 + call $~lib/rt/pure/__release + local.get $3 + call $~lib/rt/pure/__release + local.get $4 + call $~lib/rt/pure/__release + local.get $5 + call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/map/Map#clear (; 96 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/map/Map#clear (; 236 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 @@ -8867,7 +16563,7 @@ local.get $0 local.tee $1 i32.const 0 - i32.const 64 + i32.const 48 call $~lib/arraybuffer/ArrayBuffer#constructor local.set $2 local.get $1 @@ -8885,12 +16581,12 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/map/Map#constructor (; 97 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map#constructor (; 237 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if i32.const 24 - i32.const 9 + i32.const 26 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain local.set $0 @@ -8914,98 +16610,10 @@ i32.const 0 i32.store offset=20 local.get $0 - call $~lib/map/Map#clear - local.get $0 - ) - (func $~lib/util/hash/hash64 (; 98 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.wrap_i64 - local.set $1 + call $~lib/map/Map#clear local.get $0 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.set $2 - i32.const -2128831035 - local.set $3 - local.get $3 - local.get $1 - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.set $3 - local.get $3 - local.get $1 - i32.const 8 - i32.shr_u - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.set $3 - local.get $3 - local.get $1 - i32.const 16 - i32.shr_u - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.set $3 - local.get $3 - local.get $1 - i32.const 24 - i32.shr_u - i32.xor - i32.const 16777619 - i32.mul - local.set $3 - local.get $3 - local.get $2 - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.set $3 - local.get $3 - local.get $2 - i32.const 8 - i32.shr_u - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.set $3 - local.get $3 - local.get $2 - i32.const 16 - i32.shr_u - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.set $3 - local.get $3 - local.get $2 - i32.const 24 - i32.shr_u - i32.xor - i32.const 16777619 - i32.mul - local.set $3 - local.get $3 ) - (func $~lib/map/Map#find (; 99 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + (func $~lib/map/Map#find (; 238 ;) (type $FUNCSIG$iifi) (param $0 i32) (param $1 f32) (param $2 i32) (result i32) (local $3 i32) local.get $0 i32.load @@ -9024,15 +16632,15 @@ i32.eqz br_if $break|0 local.get $3 - i32.load offset=12 + i32.load offset=8 i32.const 1 i32.and i32.eqz if (result i32) local.get $3 - i64.load + f32.load local.get $1 - i64.eq + f32.eq else i32.const 0 end @@ -9041,7 +16649,7 @@ return end local.get $3 - i32.load offset=12 + i32.load offset=8 i32.const 1 i32.const -1 i32.xor @@ -9053,22 +16661,23 @@ end i32.const 0 ) - (func $~lib/map/Map#has (; 100 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) - (local $2 i64) + (func $~lib/map/Map#has (; 239 ;) (type $FUNCSIG$iif) (param $0 i32) (param $1 f32) (result i32) + (local $2 f32) local.get $0 local.get $1 - block $~lib/util/hash/HASH|inlined.0 (result i32) + block $~lib/util/hash/HASH|inlined.0 (result i32) local.get $1 local.set $2 local.get $2 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.0 + i32.reinterpret_f32 + call $~lib/util/hash/hash32 + br $~lib/util/hash/HASH|inlined.0 end - call $~lib/map/Map#find + call $~lib/map/Map#find i32.const 0 i32.ne ) - (func $~lib/map/Map#rehash (; 101 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 240 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9078,7 +16687,7 @@ (local $8 i32) (local $9 i32) (local $10 i32) - (local $11 i64) + (local $11 f32) (local $12 i32) (local $13 i32) local.get $1 @@ -9099,7 +16708,7 @@ local.set $4 i32.const 0 local.get $4 - i32.const 16 + i32.const 12 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor local.set $5 @@ -9109,7 +16718,7 @@ local.get $6 local.get $0 i32.load offset=16 - i32.const 16 + i32.const 12 i32.mul i32.add local.set $7 @@ -9125,7 +16734,7 @@ local.get $6 local.set $9 local.get $9 - i32.load offset=12 + i32.load offset=8 i32.const 1 i32.and i32.eqz @@ -9134,19 +16743,20 @@ local.set $10 local.get $10 local.get $9 - i64.load - i64.store + f32.load + f32.store local.get $10 local.get $9 - i32.load offset=8 - i32.store offset=8 - block $~lib/util/hash/HASH|inlined.2 (result i32) + i32.load offset=4 + i32.store offset=4 + block $~lib/util/hash/HASH|inlined.2 (result i32) local.get $9 - i64.load + f32.load local.set $11 local.get $11 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.2 + i32.reinterpret_f32 + call $~lib/util/hash/hash32 + br $~lib/util/hash/HASH|inlined.2 end local.get $1 i32.and @@ -9160,17 +16770,17 @@ local.get $10 local.get $13 i32.load - i32.store offset=12 + i32.store offset=8 local.get $13 local.get $8 i32.store local.get $8 - i32.const 16 + i32.const 12 i32.add local.set $8 end local.get $6 - i32.const 16 + i32.const 12 i32.add local.set $6 br $continue|0 @@ -9226,30 +16836,31 @@ local.get $5 call $~lib/rt/pure/__release ) - (func $~lib/map/Map#set (; 102 ;) (type $FUNCSIG$viji) (param $0 i32) (param $1 i64) (param $2 i32) - (local $3 i64) + (func $~lib/map/Map#set (; 241 ;) (type $FUNCSIG$vifi) (param $0 i32) (param $1 f32) (param $2 i32) + (local $3 f32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) - block $~lib/util/hash/HASH|inlined.1 (result i32) + block $~lib/util/hash/HASH|inlined.1 (result i32) local.get $1 local.set $3 local.get $3 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.1 + i32.reinterpret_f32 + call $~lib/util/hash/hash32 + br $~lib/util/hash/HASH|inlined.1 end local.set $4 local.get $0 local.get $1 local.get $4 - call $~lib/map/Map#find + call $~lib/map/Map#find local.set $5 local.get $5 if local.get $5 local.get $2 - i32.store offset=8 + i32.store offset=4 else local.get $0 i32.load offset=16 @@ -9278,7 +16889,7 @@ i32.const 1 i32.or end - call $~lib/map/Map#rehash + call $~lib/map/Map#rehash end local.get $0 i32.load offset=8 @@ -9286,508 +16897,288 @@ local.set $6 local.get $6 local.get $0 - local.get $0 - i32.load offset=16 - local.tee $7 - i32.const 1 - i32.add - i32.store offset=16 - local.get $7 - i32.const 16 - i32.mul - i32.add - local.set $5 - local.get $5 - local.get $1 - i64.store - local.get $5 - local.get $2 - i32.store offset=8 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $0 - i32.load - local.get $4 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - local.set $7 - local.get $5 - local.get $7 - i32.load - i32.store offset=12 - local.get $7 - local.get $5 - i32.store - local.get $6 - call $~lib/rt/pure/__release - end - ) - (func $~lib/map/Map#get (; 103 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) - (local $2 i64) - (local $3 i32) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.3 (result i32) - local.get $1 - local.set $2 - local.get $2 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.3 - end - call $~lib/map/Map#find - local.set $3 - local.get $3 - i32.eqz - if - i32.const 416 - i32.const 472 - i32.const 111 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.load offset=8 - ) - (func $~lib/map/Map#get:size (; 104 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.load offset=20 - ) - (func $~lib/map/Map#delete (; 105 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) - (local $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.4 (result i32) - local.get $1 - local.set $2 - local.get $2 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.4 - end - call $~lib/map/Map#find - local.set $3 - local.get $3 - i32.eqz - if - i32.const 0 - return - end - local.get $3 - local.get $3 - i32.load offset=12 - i32.const 1 - i32.or - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.set $4 - local.get $4 - i32.const 1 - i32.add - i32.const 4 - local.tee $5 - local.get $0 - i32.load offset=20 - local.tee $6 - local.get $5 - local.get $6 - i32.gt_u - select - i32.ge_u - if (result i32) - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - else - i32.const 0 - end - if - local.get $0 - local.get $4 - call $~lib/map/Map#rehash - end - i32.const 1 - ) - (func $std/map/testNumeric (; 106 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 i64) - i32.const 0 - call $~lib/map/Map#constructor - local.set $0 - block $break|0 - i64.const 0 - local.set $1 - loop $loop|0 - local.get $1 - i64.const 100 - i64.lt_s - i32.eqz - br_if $break|0 - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 6 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 10 - local.get $1 - i32.wrap_i64 - i32.add - call $~lib/map/Map#set - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 8 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 10 - local.get $1 - i32.wrap_i64 - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 9 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i64.const 1 - i64.add - local.set $1 - br $loop|0 - end - unreachable + local.get $0 + i32.load offset=16 + local.tee $7 + i32.const 1 + i32.add + i32.store offset=16 + local.get $7 + i32.const 12 + i32.mul + i32.add + local.set $5 + local.get $5 + local.get $1 + f32.store + local.get $5 + local.get $2 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + local.get $0 + i32.load + local.get $4 + local.get $0 + i32.load offset=4 + i32.and + i32.const 4 + i32.mul + i32.add + local.set $7 + local.get $5 + local.get $7 + i32.load + i32.store offset=8 + local.get $7 + local.get $5 + i32.store + local.get $6 + call $~lib/rt/pure/__release end + ) + (func $~lib/map/Map#get (; 242 ;) (type $FUNCSIG$iif) (param $0 i32) (param $1 f32) (result i32) + (local $2 f32) + (local $3 i32) local.get $0 - call $~lib/map/Map#get:size - i32.const 100 - i32.eq + local.get $1 + block $~lib/util/hash/HASH|inlined.3 (result i32) + local.get $1 + local.set $2 + local.get $2 + i32.reinterpret_f32 + call $~lib/util/hash/hash32 + br $~lib/util/hash/HASH|inlined.3 + end + call $~lib/map/Map#find + local.set $3 + local.get $3 i32.eqz if - i32.const 0 - i32.const 376 - i32.const 11 - i32.const 2 + i32.const 416 + i32.const 472 + i32.const 111 + i32.const 16 call $~lib/builtins/abort unreachable end - block $break|1 - i64.const 0 - local.set $1 - loop $loop|1 - local.get $1 - i64.const 100 - i64.lt_s - i32.eqz - br_if $break|1 - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 15 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 10 - local.get $1 - i32.wrap_i64 - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 16 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 20 - local.get $1 - i32.wrap_i64 - i32.add - call $~lib/map/Map#set - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 18 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 20 - local.get $1 - i32.wrap_i64 - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 19 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i64.const 1 - i64.add - local.set $1 - br $loop|1 - end - unreachable + local.get $3 + i32.load offset=4 + ) + (func $~lib/map/Map#get:size (; 243 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=20 + ) + (func $~lib/array/Array#constructor (; 244 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + if (result i32) + local.get $0 + else + i32.const 16 + i32.const 27 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain end + local.get $1 + i32.const 2 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.set $0 local.get $0 - call $~lib/map/Map#get:size - i32.const 100 - i32.eq - i32.eqz + i32.const 0 + i32.store offset=12 + local.get $0 + local.get $1 + i32.store offset=12 + local.get $0 + ) + (func $~lib/array/Array#__unchecked_set (; 245 ;) (type $FUNCSIG$viif) (param $0 i32) (param $1 i32) (param $2 f32) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $2 + f32.store + ) + (func $~lib/array/Array#__set (; 246 ;) (type $FUNCSIG$viif) (param $0 i32) (param $1 i32) (param $2 f32) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u if + local.get $1 i32.const 0 - i32.const 376 - i32.const 21 + i32.lt_s + if + i32.const 280 + i32.const 512 + i32.const 109 + i32.const 21 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add i32.const 2 - call $~lib/builtins/abort - unreachable + call $~lib/array/ensureSize + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.store offset=12 end - block $break|2 - i64.const 0 - local.set $1 - loop $loop|2 - local.get $1 - i64.const 50 - i64.lt_s - i32.eqz - br_if $break|2 - local.get $0 - local.get $1 - call $~lib/map/Map#has + local.get $0 + local.get $1 + local.get $2 + call $~lib/array/Array#__unchecked_set + ) + (func $~lib/array/Array#set:length (; 247 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + i32.load offset=12 + local.set $2 + local.get $0 + local.get $1 + i32.const 2 + call $~lib/array/ensureSize + local.get $0 + local.get $1 + i32.store offset=12 + ) + (func $~lib/map/Map#keys (; 248 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.load offset=8 + local.set $1 + local.get $0 + i32.load offset=16 + local.set $2 + i32.const 0 + local.get $2 + call $~lib/array/Array#constructor + local.set $3 + i32.const 0 + local.set $4 + block $break|0 + i32.const 0 + local.set $5 + loop $loop|0 + local.get $5 + local.get $2 + i32.lt_s i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 25 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 20 + br_if $break|0 local.get $1 - i32.wrap_i64 + local.get $5 + i32.const 12 + i32.mul i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 26 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#delete - drop - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz + local.set $6 + local.get $6 + i32.load offset=8 + i32.const 1 + i32.and i32.eqz if - i32.const 0 - i32.const 376 - i32.const 28 - i32.const 4 - call $~lib/builtins/abort - unreachable + local.get $3 + local.get $4 + local.get $6 + f32.load + call $~lib/array/Array#__set + local.get $4 + i32.const 1 + i32.add + local.set $4 end - local.get $1 - i64.const 1 - i64.add - local.set $1 - br $loop|2 + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $loop|0 end unreachable end + local.get $3 + local.get $4 + call $~lib/array/Array#set:length + local.get $3 + ) + (func $~lib/map/Map#values (; 249 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) local.get $0 - call $~lib/map/Map#get:size - i32.const 50 - i32.eq - i32.eqz - if + i32.load offset=8 + local.set $1 + local.get $0 + i32.load offset=16 + local.set $2 + i32.const 0 + local.get $2 + call $~lib/array/Array#constructor + local.set $3 + i32.const 0 + local.set $4 + block $break|0 i32.const 0 - i32.const 376 - i32.const 30 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block $break|3 - i64.const 0 - local.set $1 - loop $loop|3 - local.get $1 - i64.const 50 - i64.lt_s - i32.eqz - br_if $break|3 - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz + local.set $5 + loop $loop|0 + local.get $5 + local.get $2 + i32.lt_s i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 34 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 10 + br_if $break|0 local.get $1 - i32.wrap_i64 + local.get $5 + i32.const 12 + i32.mul i32.add - call $~lib/map/Map#set - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 36 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#delete - drop - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz + local.set $6 + local.get $6 + i32.load offset=8 + i32.const 1 + i32.and i32.eqz if - i32.const 0 - i32.const 376 - i32.const 38 - i32.const 4 - call $~lib/builtins/abort - unreachable + local.get $3 + local.get $6 + i32.load offset=4 + call $~lib/array/Array#push + drop + local.get $4 + i32.const 1 + i32.add + local.set $4 end - local.get $1 - i64.const 1 - i64.add - local.set $1 - br $loop|3 + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $loop|0 end unreachable end - local.get $0 - call $~lib/map/Map#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 40 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/map/Map#clear - local.get $0 - call $~lib/map/Map#get:size - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 44 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release + local.get $3 + local.get $4 + call $~lib/array/Array#set:length + local.get $3 ) - (func $~lib/map/Map#clear (; 107 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/map/Map#clear (; 250 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 @@ -9809,7 +17200,7 @@ local.get $0 local.tee $1 i32.const 0 - i32.const 64 + i32.const 48 call $~lib/arraybuffer/ArrayBuffer#constructor local.set $2 local.get $1 @@ -9827,12 +17218,12 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/map/Map#constructor (; 108 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map#constructor (; 251 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if i32.const 24 - i32.const 10 + i32.const 28 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain local.set $0 @@ -9856,10 +17247,43 @@ i32.const 0 i32.store offset=20 local.get $0 - call $~lib/map/Map#clear + call $~lib/map/Map#clear + local.get $0 + ) + (func $~lib/array/Array#get:length (; 252 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=12 + ) + (func $~lib/array/Array#__unchecked_get (; 253 ;) (type $FUNCSIG$fii) (param $0 i32) (param $1 i32) (result f32) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + f32.load + ) + (func $~lib/array/Array#__get (; 254 ;) (type $FUNCSIG$fii) (param $0 i32) (param $1 i32) (result f32) + (local $2 f32) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 280 + i32.const 512 + i32.const 93 + i32.const 41 + call $~lib/builtins/abort + unreachable + end local.get $0 + local.get $1 + call $~lib/array/Array#__unchecked_get + local.set $2 + local.get $2 ) - (func $~lib/map/Map#find (; 109 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + (func $~lib/map/Map#find (; 255 ;) (type $FUNCSIG$iifi) (param $0 i32) (param $1 f32) (param $2 i32) (result i32) (local $3 i32) local.get $0 i32.load @@ -9878,15 +17302,15 @@ i32.eqz br_if $break|0 local.get $3 - i32.load offset=12 + i32.load offset=8 i32.const 1 i32.and i32.eqz if (result i32) local.get $3 - i64.load + f32.load local.get $1 - i64.eq + f32.eq else i32.const 0 end @@ -9895,7 +17319,7 @@ return end local.get $3 - i32.load offset=12 + i32.load offset=8 i32.const 1 i32.const -1 i32.xor @@ -9907,22 +17331,7 @@ end i32.const 0 ) - (func $~lib/map/Map#has (; 110 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) - (local $2 i64) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.0 (result i32) - local.get $1 - local.set $2 - local.get $2 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.0 - end - call $~lib/map/Map#find - i32.const 0 - i32.ne - ) - (func $~lib/map/Map#rehash (; 111 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 256 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9932,7 +17341,7 @@ (local $8 i32) (local $9 i32) (local $10 i32) - (local $11 i64) + (local $11 f32) (local $12 i32) (local $13 i32) local.get $1 @@ -9953,7 +17362,7 @@ local.set $4 i32.const 0 local.get $4 - i32.const 16 + i32.const 12 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor local.set $5 @@ -9963,7 +17372,7 @@ local.get $6 local.get $0 i32.load offset=16 - i32.const 16 + i32.const 12 i32.mul i32.add local.set $7 @@ -9979,7 +17388,7 @@ local.get $6 local.set $9 local.get $9 - i32.load offset=12 + i32.load offset=8 i32.const 1 i32.and i32.eqz @@ -9988,19 +17397,20 @@ local.set $10 local.get $10 local.get $9 - i64.load - i64.store + f32.load + f32.store local.get $10 local.get $9 - i32.load offset=8 - i32.store offset=8 - block $~lib/util/hash/HASH|inlined.2 (result i32) + f32.load offset=4 + f32.store offset=4 + block $~lib/util/hash/HASH|inlined.5 (result i32) local.get $9 - i64.load + f32.load local.set $11 local.get $11 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.2 + i32.reinterpret_f32 + call $~lib/util/hash/hash32 + br $~lib/util/hash/HASH|inlined.5 end local.get $1 i32.and @@ -10014,17 +17424,17 @@ local.get $10 local.get $13 i32.load - i32.store offset=12 + i32.store offset=8 local.get $13 local.get $8 i32.store local.get $8 - i32.const 16 + i32.const 12 i32.add local.set $8 end local.get $6 - i32.const 16 + i32.const 12 i32.add local.set $6 br $continue|0 @@ -10080,30 +17490,31 @@ local.get $5 call $~lib/rt/pure/__release ) - (func $~lib/map/Map#set (; 112 ;) (type $FUNCSIG$viji) (param $0 i32) (param $1 i64) (param $2 i32) - (local $3 i64) + (func $~lib/map/Map#set (; 257 ;) (type $FUNCSIG$viff) (param $0 i32) (param $1 f32) (param $2 f32) + (local $3 f32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) - block $~lib/util/hash/HASH|inlined.1 (result i32) + block $~lib/util/hash/HASH|inlined.4 (result i32) local.get $1 local.set $3 local.get $3 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.1 + i32.reinterpret_f32 + call $~lib/util/hash/hash32 + br $~lib/util/hash/HASH|inlined.4 end local.set $4 local.get $0 local.get $1 local.get $4 - call $~lib/map/Map#find + call $~lib/map/Map#find local.set $5 local.get $5 if local.get $5 local.get $2 - i32.store offset=8 + f32.store offset=4 else local.get $0 i32.load offset=16 @@ -10132,7 +17543,7 @@ i32.const 1 i32.or end - call $~lib/map/Map#rehash + call $~lib/map/Map#rehash end local.get $0 i32.load offset=8 @@ -10147,16 +17558,16 @@ i32.add i32.store offset=16 local.get $7 - i32.const 16 + i32.const 12 i32.mul i32.add local.set $5 local.get $5 local.get $1 - i64.store + f32.store local.get $5 local.get $2 - i32.store offset=8 + f32.store offset=4 local.get $0 local.get $0 i32.load offset=20 @@ -10176,7 +17587,7 @@ local.get $5 local.get $7 i32.load - i32.store offset=12 + i32.store offset=8 local.get $7 local.get $5 i32.store @@ -10184,53 +17595,27 @@ call $~lib/rt/pure/__release end ) - (func $~lib/map/Map#get (; 113 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) - (local $2 i64) - (local $3 i32) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.3 (result i32) - local.get $1 - local.set $2 - local.get $2 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.3 - end - call $~lib/map/Map#find - local.set $3 - local.get $3 - i32.eqz - if - i32.const 416 - i32.const 472 - i32.const 111 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.load offset=8 - ) - (func $~lib/map/Map#get:size (; 114 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map#get:size (; 258 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=20 ) - (func $~lib/map/Map#delete (; 115 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) - (local $2 i64) + (func $~lib/map/Map#delete (; 259 ;) (type $FUNCSIG$iif) (param $0 i32) (param $1 f32) (result i32) + (local $2 f32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) local.get $0 local.get $1 - block $~lib/util/hash/HASH|inlined.4 (result i32) + block $~lib/util/hash/HASH|inlined.6 (result i32) local.get $1 local.set $2 local.get $2 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.4 + i32.reinterpret_f32 + call $~lib/util/hash/hash32 + br $~lib/util/hash/HASH|inlined.6 end - call $~lib/map/Map#find + call $~lib/map/Map#find local.set $3 local.get $3 i32.eqz @@ -10240,10 +17625,10 @@ end local.get $3 local.get $3 - i32.load offset=12 + i32.load offset=8 i32.const 1 i32.or - i32.store offset=12 + i32.store offset=8 local.get $0 local.get $0 i32.load offset=20 @@ -10284,28 +17669,34 @@ if local.get $0 local.get $4 - call $~lib/map/Map#rehash + call $~lib/map/Map#rehash end i32.const 1 ) - (func $std/map/testNumeric (; 116 ;) (type $FUNCSIG$v) + (func $std/map/testNumeric (; 260 ;) (type $FUNCSIG$v) (local $0 i32) - (local $1 i64) + (local $1 f32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) i32.const 0 - call $~lib/map/Map#constructor + call $~lib/map/Map#constructor local.set $0 block $break|0 - i64.const 0 + f32.const 0 local.set $1 loop $loop|0 local.get $1 - i64.const 100 - i64.lt_u + f32.const 100 + f32.lt i32.eqz br_if $break|0 local.get $0 local.get $1 - call $~lib/map/Map#has + call $~lib/map/Map#has i32.eqz i32.eqz if @@ -10320,12 +17711,12 @@ local.get $1 i32.const 10 local.get $1 - i32.wrap_i64 + i32.trunc_f32_s i32.add - call $~lib/map/Map#set + call $~lib/map/Map#set local.get $0 local.get $1 - call $~lib/map/Map#has + call $~lib/map/Map#has i32.eqz if i32.const 0 @@ -10337,10 +17728,10 @@ end local.get $0 local.get $1 - call $~lib/map/Map#get + call $~lib/map/Map#get i32.const 10 local.get $1 - i32.wrap_i64 + i32.trunc_f32_s i32.add i32.eq i32.eqz @@ -10353,15 +17744,15 @@ unreachable end local.get $1 - i64.const 1 - i64.add + f32.const 1 + f32.add local.set $1 br $loop|0 end unreachable end local.get $0 - call $~lib/map/Map#get:size + call $~lib/map/Map#get:size i32.const 100 i32.eq i32.eqz @@ -10374,17 +17765,17 @@ unreachable end block $break|1 - i64.const 0 + f32.const 0 local.set $1 loop $loop|1 local.get $1 - i64.const 100 - i64.lt_u + f32.const 100 + f32.lt i32.eqz br_if $break|1 local.get $0 local.get $1 - call $~lib/map/Map#has + call $~lib/map/Map#has i32.eqz if i32.const 0 @@ -10396,10 +17787,10 @@ end local.get $0 local.get $1 - call $~lib/map/Map#get + call $~lib/map/Map#get i32.const 10 local.get $1 - i32.wrap_i64 + i32.trunc_f32_s i32.add i32.eq i32.eqz @@ -10415,12 +17806,12 @@ local.get $1 i32.const 20 local.get $1 - i32.wrap_i64 + i32.trunc_f32_s i32.add - call $~lib/map/Map#set + call $~lib/map/Map#set local.get $0 local.get $1 - call $~lib/map/Map#has + call $~lib/map/Map#has i32.eqz if i32.const 0 @@ -10432,10 +17823,10 @@ end local.get $0 local.get $1 - call $~lib/map/Map#get + call $~lib/map/Map#get i32.const 20 local.get $1 - i32.wrap_i64 + i32.trunc_f32_s i32.add i32.eq i32.eqz @@ -10448,15 +17839,15 @@ unreachable end local.get $1 - i64.const 1 - i64.add + f32.const 1 + f32.add local.set $1 br $loop|1 end unreachable end local.get $0 - call $~lib/map/Map#get:size + call $~lib/map/Map#get:size i32.const 100 i32.eq i32.eqz @@ -10468,100 +17859,203 @@ call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/map/Map#keys + local.set $2 + local.get $0 + call $~lib/map/Map#values + local.set $3 + i32.const 0 + call $~lib/map/Map#constructor + local.set $4 + i32.const 0 + call $~lib/map/Map#constructor + local.set $5 block $break|2 - i64.const 0 - local.set $1 + i32.const 0 + local.set $6 loop $loop|2 - local.get $1 - i64.const 50 - i64.lt_u + local.get $6 + local.get $2 + call $~lib/array/Array#get:length + i32.lt_s i32.eqz br_if $break|2 + local.get $2 + local.get $6 + call $~lib/array/Array#__get + local.set $1 + local.get $3 + local.get $6 + call $~lib/array/Array#__get + local.set $7 local.get $0 local.get $1 - call $~lib/map/Map#has + call $~lib/map/Map#has i32.eqz if i32.const 0 i32.const 376 - i32.const 25 + i32.const 31 i32.const 4 call $~lib/builtins/abort unreachable end local.get $0 + local.get $7 + i32.const 20 + i32.sub + f32.convert_i32_s + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 32 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $4 local.get $1 - call $~lib/map/Map#get + local.get $1 + call $~lib/map/Map#set + local.get $5 + local.get $7 + i32.const 20 + i32.sub + local.get $7 + i32.const 20 + i32.sub + call $~lib/map/Map#set + local.get $6 + i32.const 1 + i32.add + local.set $6 + br $loop|2 + end + unreachable + end + local.get $4 + call $~lib/map/Map#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 36 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $5 + call $~lib/map/Map#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 37 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + block $break|3 + f32.const 0 + local.set $1 + loop $loop|3 + local.get $1 + f32.const 50 + f32.lt + i32.eqz + br_if $break|3 + local.get $0 + local.get $1 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 41 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/map/Map#get i32.const 20 local.get $1 - i32.wrap_i64 + i32.trunc_f32_s i32.add i32.eq i32.eqz if i32.const 0 i32.const 376 - i32.const 26 + i32.const 42 i32.const 4 call $~lib/builtins/abort unreachable end local.get $0 local.get $1 - call $~lib/map/Map#delete + call $~lib/map/Map#delete drop local.get $0 local.get $1 - call $~lib/map/Map#has + call $~lib/map/Map#has i32.eqz i32.eqz if i32.const 0 i32.const 376 - i32.const 28 + i32.const 44 i32.const 4 call $~lib/builtins/abort unreachable end local.get $1 - i64.const 1 - i64.add + f32.const 1 + f32.add local.set $1 - br $loop|2 + br $loop|3 end unreachable end local.get $0 - call $~lib/map/Map#get:size + call $~lib/map/Map#get:size i32.const 50 i32.eq i32.eqz if i32.const 0 i32.const 376 - i32.const 30 + i32.const 46 i32.const 2 call $~lib/builtins/abort unreachable end - block $break|3 - i64.const 0 + block $break|4 + f32.const 0 local.set $1 - loop $loop|3 + loop $loop|4 local.get $1 - i64.const 50 - i64.lt_u + f32.const 50 + f32.lt i32.eqz - br_if $break|3 + br_if $break|4 local.get $0 local.get $1 - call $~lib/map/Map#has + call $~lib/map/Map#has i32.eqz i32.eqz if i32.const 0 i32.const 376 - i32.const 34 + i32.const 50 i32.const 4 call $~lib/builtins/abort unreachable @@ -10570,78 +18064,86 @@ local.get $1 i32.const 10 local.get $1 - i32.wrap_i64 + i32.trunc_f32_s i32.add - call $~lib/map/Map#set + call $~lib/map/Map#set local.get $0 local.get $1 - call $~lib/map/Map#has + call $~lib/map/Map#has i32.eqz if i32.const 0 i32.const 376 - i32.const 36 + i32.const 52 i32.const 4 call $~lib/builtins/abort unreachable end local.get $0 local.get $1 - call $~lib/map/Map#delete + call $~lib/map/Map#delete drop local.get $0 local.get $1 - call $~lib/map/Map#has + call $~lib/map/Map#has i32.eqz i32.eqz if i32.const 0 i32.const 376 - i32.const 38 + i32.const 54 i32.const 4 call $~lib/builtins/abort unreachable end local.get $1 - i64.const 1 - i64.add + f32.const 1 + f32.add local.set $1 - br $loop|3 + br $loop|4 end unreachable end local.get $0 - call $~lib/map/Map#get:size + call $~lib/map/Map#get:size i32.const 50 i32.eq i32.eqz if i32.const 0 i32.const 376 - i32.const 40 + i32.const 56 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - call $~lib/map/Map#clear + call $~lib/map/Map#clear local.get $0 - call $~lib/map/Map#get:size + call $~lib/map/Map#get:size i32.const 0 i32.eq i32.eqz if i32.const 0 i32.const 376 - i32.const 44 + i32.const 60 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $2 + call $~lib/rt/pure/__release + local.get $3 + call $~lib/rt/pure/__release + local.get $4 + call $~lib/rt/pure/__release + local.get $5 + call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/map/Map#clear (; 117 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/map/Map#clear (; 261 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 @@ -10663,7 +18165,7 @@ local.get $0 local.tee $1 i32.const 0 - i32.const 48 + i32.const 64 call $~lib/arraybuffer/ArrayBuffer#constructor local.set $2 local.get $1 @@ -10681,12 +18183,12 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/map/Map#constructor (; 118 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map#constructor (; 262 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if i32.const 24 - i32.const 11 + i32.const 29 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain local.set $0 @@ -10710,10 +18212,10 @@ i32.const 0 i32.store offset=20 local.get $0 - call $~lib/map/Map#clear + call $~lib/map/Map#clear local.get $0 ) - (func $~lib/map/Map#find (; 119 ;) (type $FUNCSIG$iifi) (param $0 i32) (param $1 f32) (param $2 i32) (result i32) + (func $~lib/map/Map#find (; 263 ;) (type $FUNCSIG$iidi) (param $0 i32) (param $1 f64) (param $2 i32) (result i32) (local $3 i32) local.get $0 i32.load @@ -10732,15 +18234,15 @@ i32.eqz br_if $break|0 local.get $3 - i32.load offset=8 + i32.load offset=12 i32.const 1 i32.and i32.eqz if (result i32) local.get $3 - f32.load + f64.load local.get $1 - f32.eq + f64.eq else i32.const 0 end @@ -10749,7 +18251,7 @@ return end local.get $3 - i32.load offset=8 + i32.load offset=12 i32.const 1 i32.const -1 i32.xor @@ -10761,23 +18263,23 @@ end i32.const 0 ) - (func $~lib/map/Map#has (; 120 ;) (type $FUNCSIG$iif) (param $0 i32) (param $1 f32) (result i32) - (local $2 f32) + (func $~lib/map/Map#has (; 264 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) + (local $2 f64) local.get $0 local.get $1 - block $~lib/util/hash/HASH|inlined.0 (result i32) + block $~lib/util/hash/HASH|inlined.0 (result i32) local.get $1 local.set $2 local.get $2 - i32.reinterpret_f32 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.0 + i64.reinterpret_f64 + call $~lib/util/hash/hash64 + br $~lib/util/hash/HASH|inlined.0 end - call $~lib/map/Map#find + call $~lib/map/Map#find i32.const 0 i32.ne ) - (func $~lib/map/Map#rehash (; 121 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 265 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -10787,7 +18289,7 @@ (local $8 i32) (local $9 i32) (local $10 i32) - (local $11 f32) + (local $11 f64) (local $12 i32) (local $13 i32) local.get $1 @@ -10808,7 +18310,7 @@ local.set $4 i32.const 0 local.get $4 - i32.const 12 + i32.const 16 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor local.set $5 @@ -10818,7 +18320,7 @@ local.get $6 local.get $0 i32.load offset=16 - i32.const 12 + i32.const 16 i32.mul i32.add local.set $7 @@ -10834,7 +18336,7 @@ local.get $6 local.set $9 local.get $9 - i32.load offset=8 + i32.load offset=12 i32.const 1 i32.and i32.eqz @@ -10843,20 +18345,20 @@ local.set $10 local.get $10 local.get $9 - f32.load - f32.store + f64.load + f64.store local.get $10 local.get $9 - i32.load offset=4 - i32.store offset=4 - block $~lib/util/hash/HASH|inlined.2 (result i32) + i32.load offset=8 + i32.store offset=8 + block $~lib/util/hash/HASH|inlined.2 (result i32) local.get $9 - f32.load + f64.load local.set $11 local.get $11 - i32.reinterpret_f32 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.2 + i64.reinterpret_f64 + call $~lib/util/hash/hash64 + br $~lib/util/hash/HASH|inlined.2 end local.get $1 i32.and @@ -10870,17 +18372,17 @@ local.get $10 local.get $13 i32.load - i32.store offset=8 + i32.store offset=12 local.get $13 local.get $8 i32.store local.get $8 - i32.const 12 + i32.const 16 i32.add local.set $8 end local.get $6 - i32.const 12 + i32.const 16 i32.add local.set $6 br $continue|0 @@ -10917,590 +18419,368 @@ i32.ne if local.get $12 - call $~lib/rt/pure/__retain - local.set $12 - local.get $10 - call $~lib/rt/pure/__release - end - local.get $12 - i32.store offset=8 - local.get $0 - local.get $4 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - ) - (func $~lib/map/Map#set (; 122 ;) (type $FUNCSIG$vifi) (param $0 i32) (param $1 f32) (param $2 i32) - (local $3 f32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - block $~lib/util/hash/HASH|inlined.1 (result i32) - local.get $1 - local.set $3 - local.get $3 - i32.reinterpret_f32 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.1 - end - local.set $4 - local.get $0 - local.get $1 - local.get $4 - call $~lib/map/Map#find - local.set $5 - local.get $5 - if - local.get $5 - local.get $2 - i32.store offset=4 - else - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/map/Map#rehash - end - local.get $0 - i32.load offset=8 - call $~lib/rt/pure/__retain - local.set $6 - local.get $6 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $7 - i32.const 1 - i32.add - i32.store offset=16 - local.get $7 - i32.const 12 - i32.mul - i32.add - local.set $5 - local.get $5 - local.get $1 - f32.store - local.get $5 - local.get $2 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $0 - i32.load - local.get $4 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - local.set $7 - local.get $5 - local.get $7 - i32.load - i32.store offset=8 - local.get $7 - local.get $5 - i32.store - local.get $6 - call $~lib/rt/pure/__release - end - ) - (func $~lib/map/Map#get (; 123 ;) (type $FUNCSIG$iif) (param $0 i32) (param $1 f32) (result i32) - (local $2 f32) - (local $3 i32) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.3 (result i32) - local.get $1 - local.set $2 - local.get $2 - i32.reinterpret_f32 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.3 - end - call $~lib/map/Map#find - local.set $3 - local.get $3 - i32.eqz - if - i32.const 416 - i32.const 472 - i32.const 111 - i32.const 16 - call $~lib/builtins/abort - unreachable + call $~lib/rt/pure/__retain + local.set $12 + local.get $10 + call $~lib/rt/pure/__release end - local.get $3 - i32.load offset=4 - ) - (func $~lib/map/Map#get:size (; 124 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $12 + i32.store offset=8 + local.get $0 + local.get $4 + i32.store offset=12 + local.get $0 local.get $0 i32.load offset=20 + i32.store offset=16 + local.get $3 + call $~lib/rt/pure/__release + local.get $5 + call $~lib/rt/pure/__release ) - (func $~lib/map/Map#delete (; 125 ;) (type $FUNCSIG$iif) (param $0 i32) (param $1 f32) (result i32) - (local $2 f32) - (local $3 i32) + (func $~lib/map/Map#set (; 266 ;) (type $FUNCSIG$vidi) (param $0 i32) (param $1 f64) (param $2 i32) + (local $3 f64) (local $4 i32) (local $5 i32) (local $6 i32) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.4 (result i32) + (local $7 i32) + block $~lib/util/hash/HASH|inlined.1 (result i32) local.get $1 - local.set $2 - local.get $2 - i32.reinterpret_f32 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.4 - end - call $~lib/map/Map#find - local.set $3 - local.get $3 - i32.eqz - if - i32.const 0 - return + local.set $3 + local.get $3 + i64.reinterpret_f64 + call $~lib/util/hash/hash64 + br $~lib/util/hash/HASH|inlined.1 end - local.get $3 - local.get $3 - i32.load offset=8 - i32.const 1 - i32.or - i32.store offset=8 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u local.set $4 - local.get $4 - i32.const 1 - i32.add - i32.const 4 - local.tee $5 local.get $0 - i32.load offset=20 - local.tee $6 + local.get $1 + local.get $4 + call $~lib/map/Map#find + local.set $5 local.get $5 - local.get $6 - i32.gt_u - select - i32.ge_u - if (result i32) - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - else - i32.const 0 - end if + local.get $5 + local.get $2 + i32.store offset=8 + else local.get $0 - local.get $4 - call $~lib/map/Map#rehash - end - i32.const 1 - ) - (func $std/map/testNumeric (; 126 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 f32) - i32.const 0 - call $~lib/map/Map#constructor - local.set $0 - block $break|0 - f32.const 0 - local.set $1 - loop $loop|0 - local.get $1 - f32.const 100 - f32.lt - i32.eqz - br_if $break|0 - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 6 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 10 - local.get $1 - i32.trunc_f32_s - i32.add - call $~lib/map/Map#set - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 8 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 10 - local.get $1 - i32.trunc_f32_s - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 9 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - f32.const 1 - f32.add - local.set $1 - br $loop|0 - end - unreachable - end - local.get $0 - call $~lib/map/Map#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 11 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block $break|1 - f32.const 0 - local.set $1 - loop $loop|1 - local.get $1 - f32.const 100 - f32.lt - i32.eqz - br_if $break|1 - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 15 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 10 - local.get $1 - i32.trunc_f32_s - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 16 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 20 - local.get $1 - i32.trunc_f32_s - i32.add - call $~lib/map/Map#set - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 18 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 20 - local.get $1 - i32.trunc_f32_s - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 19 - i32.const 4 - call $~lib/builtins/abort - unreachable + i32.load offset=16 + local.get $0 + i32.load offset=12 + i32.eq + if + local.get $0 + local.get $0 + i32.load offset=20 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + local.get $0 + i32.load offset=4 + else + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or end - local.get $1 - f32.const 1 - f32.add - local.set $1 - br $loop|1 + call $~lib/map/Map#rehash end - unreachable + local.get $0 + i32.load offset=8 + call $~lib/rt/pure/__retain + local.set $6 + local.get $6 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $7 + i32.const 1 + i32.add + i32.store offset=16 + local.get $7 + i32.const 16 + i32.mul + i32.add + local.set $5 + local.get $5 + local.get $1 + f64.store + local.get $5 + local.get $2 + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + local.get $0 + i32.load + local.get $4 + local.get $0 + i32.load offset=4 + i32.and + i32.const 4 + i32.mul + i32.add + local.set $7 + local.get $5 + local.get $7 + i32.load + i32.store offset=12 + local.get $7 + local.get $5 + i32.store + local.get $6 + call $~lib/rt/pure/__release end + ) + (func $~lib/map/Map#get (; 267 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) + (local $2 f64) + (local $3 i32) local.get $0 - call $~lib/map/Map#get:size - i32.const 100 - i32.eq + local.get $1 + block $~lib/util/hash/HASH|inlined.3 (result i32) + local.get $1 + local.set $2 + local.get $2 + i64.reinterpret_f64 + call $~lib/util/hash/hash64 + br $~lib/util/hash/HASH|inlined.3 + end + call $~lib/map/Map#find + local.set $3 + local.get $3 i32.eqz if - i32.const 0 - i32.const 376 - i32.const 21 - i32.const 2 + i32.const 416 + i32.const 472 + i32.const 111 + i32.const 16 call $~lib/builtins/abort unreachable end - block $break|2 - f32.const 0 - local.set $1 - loop $loop|2 - local.get $1 - f32.const 50 - f32.lt - i32.eqz - br_if $break|2 - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 25 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 20 - local.get $1 - i32.trunc_f32_s - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 26 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#delete - drop - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 28 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - f32.const 1 - f32.add - local.set $1 - br $loop|2 - end - unreachable + local.get $3 + i32.load offset=8 + ) + (func $~lib/map/Map#get:size (; 268 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=20 + ) + (func $~lib/array/Array#constructor (; 269 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + if (result i32) + local.get $0 + else + i32.const 16 + i32.const 30 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain end + local.get $1 + i32.const 3 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.set $0 local.get $0 - call $~lib/map/Map#get:size - i32.const 50 - i32.eq - i32.eqz + i32.const 0 + i32.store offset=12 + local.get $0 + local.get $1 + i32.store offset=12 + local.get $0 + ) + (func $~lib/array/Array#__unchecked_set (; 270 ;) (type $FUNCSIG$viid) (param $0 i32) (param $1 i32) (param $2 f64) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.get $2 + f64.store + ) + (func $~lib/array/Array#__set (; 271 ;) (type $FUNCSIG$viid) (param $0 i32) (param $1 i32) (param $2 f64) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u if + local.get $1 i32.const 0 - i32.const 376 - i32.const 30 - i32.const 2 - call $~lib/builtins/abort - unreachable + i32.lt_s + if + i32.const 280 + i32.const 512 + i32.const 109 + i32.const 21 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.const 3 + call $~lib/array/ensureSize + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.store offset=12 end - block $break|3 - f32.const 0 - local.set $1 - loop $loop|3 - local.get $1 - f32.const 50 - f32.lt - i32.eqz - br_if $break|3 - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz + local.get $0 + local.get $1 + local.get $2 + call $~lib/array/Array#__unchecked_set + ) + (func $~lib/array/Array#set:length (; 272 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + i32.load offset=12 + local.set $2 + local.get $0 + local.get $1 + i32.const 3 + call $~lib/array/ensureSize + local.get $0 + local.get $1 + i32.store offset=12 + ) + (func $~lib/map/Map#keys (; 273 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.load offset=8 + local.set $1 + local.get $0 + i32.load offset=16 + local.set $2 + i32.const 0 + local.get $2 + call $~lib/array/Array#constructor + local.set $3 + i32.const 0 + local.set $4 + block $break|0 + i32.const 0 + local.set $5 + loop $loop|0 + local.get $5 + local.get $2 + i32.lt_s i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 34 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 10 + br_if $break|0 local.get $1 - i32.trunc_f32_s + local.get $5 + i32.const 16 + i32.mul i32.add - call $~lib/map/Map#set - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 36 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#delete - drop - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz + local.set $6 + local.get $6 + i32.load offset=12 + i32.const 1 + i32.and i32.eqz if - i32.const 0 - i32.const 376 - i32.const 38 - i32.const 4 - call $~lib/builtins/abort - unreachable + local.get $3 + local.get $4 + local.get $6 + f64.load + call $~lib/array/Array#__set + local.get $4 + i32.const 1 + i32.add + local.set $4 end - local.get $1 - f32.const 1 - f32.add - local.set $1 - br $loop|3 + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $loop|0 end unreachable end + local.get $3 + local.get $4 + call $~lib/array/Array#set:length + local.get $3 + ) + (func $~lib/map/Map#values (; 274 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) local.get $0 - call $~lib/map/Map#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 40 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/map/Map#clear + i32.load offset=8 + local.set $1 local.get $0 - call $~lib/map/Map#get:size + i32.load offset=16 + local.set $2 i32.const 0 - i32.eq - i32.eqz - if + local.get $2 + call $~lib/array/Array#constructor + local.set $3 + i32.const 0 + local.set $4 + block $break|0 i32.const 0 - i32.const 376 - i32.const 44 - i32.const 2 - call $~lib/builtins/abort + local.set $5 + loop $loop|0 + local.get $5 + local.get $2 + i32.lt_s + i32.eqz + br_if $break|0 + local.get $1 + local.get $5 + i32.const 16 + i32.mul + i32.add + local.set $6 + local.get $6 + i32.load offset=12 + i32.const 1 + i32.and + i32.eqz + if + local.get $3 + local.get $6 + i32.load offset=8 + call $~lib/array/Array#push + drop + local.get $4 + i32.const 1 + i32.add + local.set $4 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $loop|0 + end unreachable end - local.get $0 - call $~lib/rt/pure/__release + local.get $3 + local.get $4 + call $~lib/array/Array#set:length + local.get $3 ) - (func $~lib/map/Map#clear (; 127 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/map/Map#clear (; 275 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 @@ -11522,7 +18802,7 @@ local.get $0 local.tee $1 i32.const 0 - i32.const 64 + i32.const 96 call $~lib/arraybuffer/ArrayBuffer#constructor local.set $2 local.get $1 @@ -11540,12 +18820,12 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/map/Map#constructor (; 128 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map#constructor (; 276 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if i32.const 24 - i32.const 12 + i32.const 31 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain local.set $0 @@ -11569,10 +18849,43 @@ i32.const 0 i32.store offset=20 local.get $0 - call $~lib/map/Map#clear + call $~lib/map/Map#clear local.get $0 ) - (func $~lib/map/Map#find (; 129 ;) (type $FUNCSIG$iidi) (param $0 i32) (param $1 f64) (param $2 i32) (result i32) + (func $~lib/array/Array#get:length (; 277 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=12 + ) + (func $~lib/array/Array#__unchecked_get (; 278 ;) (type $FUNCSIG$dii) (param $0 i32) (param $1 i32) (result f64) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 3 + i32.shl + i32.add + f64.load + ) + (func $~lib/array/Array#__get (; 279 ;) (type $FUNCSIG$dii) (param $0 i32) (param $1 i32) (result f64) + (local $2 f64) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 280 + i32.const 512 + i32.const 93 + i32.const 41 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/array/Array#__unchecked_get + local.set $2 + local.get $2 + ) + (func $~lib/map/Map#find (; 280 ;) (type $FUNCSIG$iidi) (param $0 i32) (param $1 f64) (param $2 i32) (result i32) (local $3 i32) local.get $0 i32.load @@ -11591,7 +18904,7 @@ i32.eqz br_if $break|0 local.get $3 - i32.load offset=12 + i32.load offset=16 i32.const 1 i32.and i32.eqz @@ -11608,7 +18921,7 @@ return end local.get $3 - i32.load offset=12 + i32.load offset=16 i32.const 1 i32.const -1 i32.xor @@ -11620,23 +18933,7 @@ end i32.const 0 ) - (func $~lib/map/Map#has (; 130 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) - (local $2 f64) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.0 (result i32) - local.get $1 - local.set $2 - local.get $2 - i64.reinterpret_f64 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.0 - end - call $~lib/map/Map#find - i32.const 0 - i32.ne - ) - (func $~lib/map/Map#rehash (; 131 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 281 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -11667,7 +18964,7 @@ local.set $4 i32.const 0 local.get $4 - i32.const 16 + i32.const 24 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor local.set $5 @@ -11677,7 +18974,7 @@ local.get $6 local.get $0 i32.load offset=16 - i32.const 16 + i32.const 24 i32.mul i32.add local.set $7 @@ -11693,7 +18990,7 @@ local.get $6 local.set $9 local.get $9 - i32.load offset=12 + i32.load offset=16 i32.const 1 i32.and i32.eqz @@ -11706,16 +19003,16 @@ f64.store local.get $10 local.get $9 - i32.load offset=8 - i32.store offset=8 - block $~lib/util/hash/HASH|inlined.2 (result i32) + f64.load offset=8 + f64.store offset=8 + block $~lib/util/hash/HASH|inlined.5 (result i32) local.get $9 f64.load local.set $11 local.get $11 i64.reinterpret_f64 call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.2 + br $~lib/util/hash/HASH|inlined.5 end local.get $1 i32.and @@ -11729,17 +19026,17 @@ local.get $10 local.get $13 i32.load - i32.store offset=12 + i32.store offset=16 local.get $13 local.get $8 i32.store local.get $8 - i32.const 16 + i32.const 24 i32.add local.set $8 end local.get $6 - i32.const 16 + i32.const 24 i32.add local.set $6 br $continue|0 @@ -11795,31 +19092,31 @@ local.get $5 call $~lib/rt/pure/__release ) - (func $~lib/map/Map#set (; 132 ;) (type $FUNCSIG$vidi) (param $0 i32) (param $1 f64) (param $2 i32) + (func $~lib/map/Map#set (; 282 ;) (type $FUNCSIG$vidd) (param $0 i32) (param $1 f64) (param $2 f64) (local $3 f64) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) - block $~lib/util/hash/HASH|inlined.1 (result i32) + block $~lib/util/hash/HASH|inlined.4 (result i32) local.get $1 local.set $3 local.get $3 i64.reinterpret_f64 call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.1 + br $~lib/util/hash/HASH|inlined.4 end local.set $4 local.get $0 local.get $1 local.get $4 - call $~lib/map/Map#find + call $~lib/map/Map#find local.set $5 local.get $5 if local.get $5 local.get $2 - i32.store offset=8 + f64.store offset=8 else local.get $0 i32.load offset=16 @@ -11848,7 +19145,7 @@ i32.const 1 i32.or end - call $~lib/map/Map#rehash + call $~lib/map/Map#rehash end local.get $0 i32.load offset=8 @@ -11863,7 +19160,7 @@ i32.add i32.store offset=16 local.get $7 - i32.const 16 + i32.const 24 i32.mul i32.add local.set $5 @@ -11872,7 +19169,7 @@ f64.store local.get $5 local.get $2 - i32.store offset=8 + f64.store offset=8 local.get $0 local.get $0 i32.load offset=20 @@ -11892,47 +19189,19 @@ local.get $5 local.get $7 i32.load - i32.store offset=12 + i32.store offset=16 local.get $7 local.get $5 - i32.store - local.get $6 - call $~lib/rt/pure/__release - end - ) - (func $~lib/map/Map#get (; 133 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) - (local $2 f64) - (local $3 i32) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.3 (result i32) - local.get $1 - local.set $2 - local.get $2 - i64.reinterpret_f64 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.3 - end - call $~lib/map/Map#find - local.set $3 - local.get $3 - i32.eqz - if - i32.const 416 - i32.const 472 - i32.const 111 - i32.const 16 - call $~lib/builtins/abort - unreachable + i32.store + local.get $6 + call $~lib/rt/pure/__release end - local.get $3 - i32.load offset=8 ) - (func $~lib/map/Map#get:size (; 134 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map#get:size (; 283 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=20 ) - (func $~lib/map/Map#delete (; 135 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) + (func $~lib/map/Map#delete (; 284 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) (local $2 f64) (local $3 i32) (local $4 i32) @@ -11940,13 +19209,13 @@ (local $6 i32) local.get $0 local.get $1 - block $~lib/util/hash/HASH|inlined.4 (result i32) + block $~lib/util/hash/HASH|inlined.6 (result i32) local.get $1 local.set $2 local.get $2 i64.reinterpret_f64 call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.4 + br $~lib/util/hash/HASH|inlined.6 end call $~lib/map/Map#find local.set $3 @@ -12006,9 +19275,15 @@ end i32.const 1 ) - (func $std/map/testNumeric (; 136 ;) (type $FUNCSIG$v) + (func $std/map/testNumeric (; 285 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 f64) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) i32.const 0 call $~lib/map/Map#constructor local.set $0 @@ -12186,15 +19461,118 @@ call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/map/Map#keys + local.set $2 + local.get $0 + call $~lib/map/Map#values + local.set $3 + i32.const 0 + call $~lib/map/Map#constructor + local.set $4 + i32.const 0 + call $~lib/map/Map#constructor + local.set $5 block $break|2 + i32.const 0 + local.set $6 + loop $loop|2 + local.get $6 + local.get $2 + call $~lib/array/Array#get:length + i32.lt_s + i32.eqz + br_if $break|2 + local.get $2 + local.get $6 + call $~lib/array/Array#__get + local.set $1 + local.get $3 + local.get $6 + call $~lib/array/Array#__get + local.set $7 + local.get $0 + local.get $1 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 31 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $7 + i32.const 20 + i32.sub + f64.convert_i32_s + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 32 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + local.get $1 + call $~lib/map/Map#set + local.get $5 + local.get $7 + i32.const 20 + i32.sub + local.get $7 + i32.const 20 + i32.sub + call $~lib/map/Map#set + local.get $6 + i32.const 1 + i32.add + local.set $6 + br $loop|2 + end + unreachable + end + local.get $4 + call $~lib/map/Map#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 36 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $5 + call $~lib/map/Map#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 37 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + block $break|3 f64.const 0 local.set $1 - loop $loop|2 + loop $loop|3 local.get $1 f64.const 50 f64.lt i32.eqz - br_if $break|2 + br_if $break|3 local.get $0 local.get $1 call $~lib/map/Map#has @@ -12202,7 +19580,7 @@ if i32.const 0 i32.const 376 - i32.const 25 + i32.const 41 i32.const 4 call $~lib/builtins/abort unreachable @@ -12219,7 +19597,7 @@ if i32.const 0 i32.const 376 - i32.const 26 + i32.const 42 i32.const 4 call $~lib/builtins/abort unreachable @@ -12236,7 +19614,7 @@ if i32.const 0 i32.const 376 - i32.const 28 + i32.const 44 i32.const 4 call $~lib/builtins/abort unreachable @@ -12245,7 +19623,7 @@ f64.const 1 f64.add local.set $1 - br $loop|2 + br $loop|3 end unreachable end @@ -12257,20 +19635,20 @@ if i32.const 0 i32.const 376 - i32.const 30 + i32.const 46 i32.const 2 call $~lib/builtins/abort unreachable end - block $break|3 + block $break|4 f64.const 0 local.set $1 - loop $loop|3 + loop $loop|4 local.get $1 f64.const 50 f64.lt i32.eqz - br_if $break|3 + br_if $break|4 local.get $0 local.get $1 call $~lib/map/Map#has @@ -12279,7 +19657,7 @@ if i32.const 0 i32.const 376 - i32.const 34 + i32.const 50 i32.const 4 call $~lib/builtins/abort unreachable @@ -12298,7 +19676,7 @@ if i32.const 0 i32.const 376 - i32.const 36 + i32.const 52 i32.const 4 call $~lib/builtins/abort unreachable @@ -12315,7 +19693,7 @@ if i32.const 0 i32.const 376 - i32.const 38 + i32.const 54 i32.const 4 call $~lib/builtins/abort unreachable @@ -12324,7 +19702,7 @@ f64.const 1 f64.add local.set $1 - br $loop|3 + br $loop|4 end unreachable end @@ -12336,7 +19714,7 @@ if i32.const 0 i32.const 376 - i32.const 40 + i32.const 56 i32.const 2 call $~lib/builtins/abort unreachable @@ -12351,15 +19729,23 @@ if i32.const 0 i32.const 376 - i32.const 44 + i32.const 60 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $2 + call $~lib/rt/pure/__release + local.get $3 + call $~lib/rt/pure/__release + local.get $4 + call $~lib/rt/pure/__release + local.get $5 + call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release ) - (func $start:std/map (; 137 ;) (type $FUNCSIG$v) + (func $start:std/map (; 286 ;) (type $FUNCSIG$v) call $std/map/testNumeric call $std/map/testNumeric call $std/map/testNumeric @@ -12371,10 +19757,10 @@ call $std/map/testNumeric call $std/map/testNumeric ) - (func $start (; 138 ;) (type $FUNCSIG$v) + (func $start (; 287 ;) (type $FUNCSIG$v) call $start:std/map ) - (func $~lib/rt/pure/__visit (; 139 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/pure/__visit (; 288 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) local.get $0 @@ -12504,7 +19890,126 @@ end end ) - (func $~lib/map/Map#__visit_impl (; 140 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#__visit_impl (; 289 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + i32.load + local.get $1 + call $~lib/rt/pure/__visit + local.get $0 + i32.load offset=8 + local.set $2 + local.get $2 + local.get $1 + call $~lib/rt/pure/__visit + ) + (func $~lib/array/Array#__visit_impl (; 290 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + nop + ) + (func $~lib/array/Array#__visit_impl (; 291 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + nop + ) + (func $~lib/map/Map#__visit_impl (; 292 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + i32.load + local.get $1 + call $~lib/rt/pure/__visit + local.get $0 + i32.load offset=8 + local.set $2 + local.get $2 + local.get $1 + call $~lib/rt/pure/__visit + ) + (func $~lib/map/Map#__visit_impl (; 293 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + i32.load + local.get $1 + call $~lib/rt/pure/__visit + local.get $0 + i32.load offset=8 + local.set $2 + local.get $2 + local.get $1 + call $~lib/rt/pure/__visit + ) + (func $~lib/map/Map#__visit_impl (; 294 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + i32.load + local.get $1 + call $~lib/rt/pure/__visit + local.get $0 + i32.load offset=8 + local.set $2 + local.get $2 + local.get $1 + call $~lib/rt/pure/__visit + ) + (func $~lib/array/Array#__visit_impl (; 295 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + nop + ) + (func $~lib/map/Map#__visit_impl (; 296 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + i32.load + local.get $1 + call $~lib/rt/pure/__visit + local.get $0 + i32.load offset=8 + local.set $2 + local.get $2 + local.get $1 + call $~lib/rt/pure/__visit + ) + (func $~lib/map/Map#__visit_impl (; 297 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + i32.load + local.get $1 + call $~lib/rt/pure/__visit + local.get $0 + i32.load offset=8 + local.set $2 + local.get $2 + local.get $1 + call $~lib/rt/pure/__visit + ) + (func $~lib/array/Array#__visit_impl (; 298 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + nop + ) + (func $~lib/map/Map#__visit_impl (; 299 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + i32.load + local.get $1 + call $~lib/rt/pure/__visit + local.get $0 + i32.load offset=8 + local.set $2 + local.get $2 + local.get $1 + call $~lib/rt/pure/__visit + ) + (func $~lib/map/Map#__visit_impl (; 300 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + i32.load + local.get $1 + call $~lib/rt/pure/__visit + local.get $0 + i32.load offset=8 + local.set $2 + local.get $2 + local.get $1 + call $~lib/rt/pure/__visit + ) + (func $~lib/array/Array#__visit_impl (; 301 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + nop + ) + (func $~lib/map/Map#__visit_impl (; 302 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 i32.load @@ -12517,7 +20022,7 @@ local.get $1 call $~lib/rt/pure/__visit ) - (func $~lib/map/Map#__visit_impl (; 141 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#__visit_impl (; 303 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 i32.load @@ -12530,7 +20035,23 @@ local.get $1 call $~lib/rt/pure/__visit ) - (func $~lib/map/Map#__visit_impl (; 142 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#__visit_impl (; 304 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + nop + ) + (func $~lib/map/Map#__visit_impl (; 305 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + i32.load + local.get $1 + call $~lib/rt/pure/__visit + local.get $0 + i32.load offset=8 + local.set $2 + local.get $2 + local.get $1 + call $~lib/rt/pure/__visit + ) + (func $~lib/map/Map#__visit_impl (; 306 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 i32.load @@ -12543,7 +20064,10 @@ local.get $1 call $~lib/rt/pure/__visit ) - (func $~lib/map/Map#__visit_impl (; 143 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#__visit_impl (; 307 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + nop + ) + (func $~lib/map/Map#__visit_impl (; 308 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 i32.load @@ -12556,7 +20080,7 @@ local.get $1 call $~lib/rt/pure/__visit ) - (func $~lib/map/Map#__visit_impl (; 144 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#__visit_impl (; 309 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 i32.load @@ -12569,7 +20093,10 @@ local.get $1 call $~lib/rt/pure/__visit ) - (func $~lib/map/Map#__visit_impl (; 145 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#__visit_impl (; 310 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + nop + ) + (func $~lib/map/Map#__visit_impl (; 311 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 i32.load @@ -12582,7 +20109,7 @@ local.get $1 call $~lib/rt/pure/__visit ) - (func $~lib/map/Map#__visit_impl (; 146 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#__visit_impl (; 312 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 i32.load @@ -12595,7 +20122,10 @@ local.get $1 call $~lib/rt/pure/__visit ) - (func $~lib/map/Map#__visit_impl (; 147 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#__visit_impl (; 313 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + nop + ) + (func $~lib/map/Map#__visit_impl (; 314 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 i32.load @@ -12608,7 +20138,7 @@ local.get $1 call $~lib/rt/pure/__visit ) - (func $~lib/map/Map#__visit_impl (; 148 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#__visit_impl (; 315 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 i32.load @@ -12621,7 +20151,10 @@ local.get $1 call $~lib/rt/pure/__visit ) - (func $~lib/map/Map#__visit_impl (; 149 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#__visit_impl (; 316 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + nop + ) + (func $~lib/map/Map#__visit_impl (; 317 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 i32.load @@ -12634,92 +20167,209 @@ local.get $1 call $~lib/rt/pure/__visit ) - (func $~lib/rt/__visit_members (; 150 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - block $switch$1$default - block $switch$1$case$14 - block $switch$1$case$13 - block $switch$1$case$12 - block $switch$1$case$11 - block $switch$1$case$10 - block $switch$1$case$9 - block $switch$1$case$8 - block $switch$1$case$7 - block $switch$1$case$6 - block $switch$1$case$5 - block $switch$1$case$4 - block $switch$1$case$2 + (func $~lib/rt/__visit_members (; 318 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + block $block$4$break + block $switch$1$default + block $switch$1$case$33 + block $switch$1$case$32 + block $switch$1$case$31 + block $switch$1$case$30 + block $switch$1$case$29 + block $switch$1$case$28 + block $switch$1$case$27 + block $switch$1$case$26 + block $switch$1$case$25 + block $switch$1$case$24 + block $switch$1$case$23 + block $switch$1$case$22 + block $switch$1$case$21 + block $switch$1$case$20 + block $switch$1$case$19 + block $switch$1$case$18 + block $switch$1$case$17 + block $switch$1$case$16 + block $switch$1$case$15 + block $switch$1$case$14 + block $switch$1$case$13 + block $switch$1$case$12 + block $switch$1$case$11 + block $switch$1$case$10 + block $switch$1$case$9 + block $switch$1$case$8 + block $switch$1$case$7 + block $switch$1$case$6 + block $switch$1$case$5 + block $switch$1$case$4 + block $switch$1$case$2 + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$case$5 $switch$1$case$6 $switch$1$case$7 $switch$1$case$8 $switch$1$case$9 $switch$1$case$10 $switch$1$case$11 $switch$1$case$12 $switch$1$case$13 $switch$1$case$14 $switch$1$case$15 $switch$1$case$16 $switch$1$case$17 $switch$1$case$18 $switch$1$case$19 $switch$1$case$20 $switch$1$case$21 $switch$1$case$22 $switch$1$case$23 $switch$1$case$24 $switch$1$case$25 $switch$1$case$26 $switch$1$case$27 $switch$1$case$28 $switch$1$case$29 $switch$1$case$30 $switch$1$case$31 $switch$1$case$32 $switch$1$case$33 $switch$1$default + end + return + end + br $block$4$break + end + local.get $0 + local.get $1 + call $~lib/map/Map#__visit_impl + return + end + local.get $0 + local.get $1 + call $~lib/array/Array#__visit_impl + br $block$4$break + end + local.get $0 + local.get $1 + call $~lib/array/Array#__visit_impl + br $block$4$break + end + local.get $0 + local.get $1 + call $~lib/map/Map#__visit_impl + return + end + local.get $0 + local.get $1 + call $~lib/map/Map#__visit_impl + return + end + local.get $0 + local.get $1 + call $~lib/map/Map#__visit_impl + return + end + local.get $0 + local.get $1 + call $~lib/array/Array#__visit_impl + br $block$4$break + end + local.get $0 + local.get $1 + call $~lib/map/Map#__visit_impl + return + end + local.get $0 + local.get $1 + call $~lib/map/Map#__visit_impl + return + end + local.get $0 + local.get $1 + call $~lib/array/Array#__visit_impl + br $block$4$break + end + local.get $0 + local.get $1 + call $~lib/map/Map#__visit_impl + return + end + local.get $0 + local.get $1 + call $~lib/map/Map#__visit_impl + return + end + local.get $0 + local.get $1 + call $~lib/array/Array#__visit_impl + br $block$4$break + end + local.get $0 + local.get $1 + call $~lib/map/Map#__visit_impl + return + end + local.get $0 + local.get $1 + call $~lib/map/Map#__visit_impl + return + end + local.get $0 + local.get $1 + call $~lib/array/Array#__visit_impl + br $block$4$break + end + local.get $0 + local.get $1 + call $~lib/map/Map#__visit_impl + return + end local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$case$5 $switch$1$case$6 $switch$1$case$7 $switch$1$case$8 $switch$1$case$9 $switch$1$case$10 $switch$1$case$11 $switch$1$case$12 $switch$1$case$13 $switch$1$case$14 $switch$1$default + local.get $1 + call $~lib/map/Map#__visit_impl + return end - return - end - local.get $0 - i32.load - local.tee $2 - if - local.get $2 + local.get $0 local.get $1 - call $~lib/rt/pure/__visit + call $~lib/array/Array#__visit_impl + br $block$4$break end + local.get $0 + local.get $1 + call $~lib/map/Map#__visit_impl return end local.get $0 local.get $1 - call $~lib/map/Map#__visit_impl + call $~lib/map/Map#__visit_impl return end local.get $0 local.get $1 - call $~lib/map/Map#__visit_impl - return + call $~lib/array/Array#__visit_impl + br $block$4$break end local.get $0 local.get $1 - call $~lib/map/Map#__visit_impl + call $~lib/map/Map#__visit_impl return end local.get $0 local.get $1 - call $~lib/map/Map#__visit_impl + call $~lib/map/Map#__visit_impl return end local.get $0 local.get $1 - call $~lib/map/Map#__visit_impl - return + call $~lib/array/Array#__visit_impl + br $block$4$break end local.get $0 local.get $1 - call $~lib/map/Map#__visit_impl + call $~lib/map/Map#__visit_impl return end local.get $0 local.get $1 - call $~lib/map/Map#__visit_impl + call $~lib/map/Map#__visit_impl return end local.get $0 local.get $1 - call $~lib/map/Map#__visit_impl - return + call $~lib/array/Array#__visit_impl + br $block$4$break end local.get $0 local.get $1 - call $~lib/map/Map#__visit_impl + call $~lib/map/Map#__visit_impl return end - local.get $0 + unreachable + end + local.get $0 + i32.load + local.tee $2 + if + local.get $2 local.get $1 - call $~lib/map/Map#__visit_impl - return + call $~lib/rt/pure/__visit end - unreachable + return ) - (func $null (; 151 ;) (type $FUNCSIG$v) + (func $null (; 319 ;) (type $FUNCSIG$v) unreachable ) ) From 55e0d6cc8330157498893fbdcc3a5421449caad8 Mon Sep 17 00:00:00 2001 From: "Liao.Peng" Date: Fri, 13 Dec 2019 11:34:14 +0800 Subject: [PATCH 2/4] 1. Regenerate the map.wat Signed-off-by: Liao.Peng --- tests/compiler/std/map.optimized.wat | 242 +++++----- tests/compiler/std/map.untouched.wat | 669 +++++++++++++-------------- 2 files changed, 431 insertions(+), 480 deletions(-) diff --git a/tests/compiler/std/map.optimized.wat b/tests/compiler/std/map.optimized.wat index 3b7d99eed3..f6a74d55b8 100644 --- a/tests/compiler/std/map.optimized.wat +++ b/tests/compiler/std/map.optimized.wat @@ -2813,29 +2813,43 @@ i32.store offset=12 local.get $1 ) - (func $~lib/array/Array#push (; 48 ;) (param $0 i32) (param $1 i32) - (local $2 i32) + (func $~lib/array/Array#__set (; 48 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) - local.get $0 + local.get $1 local.get $0 i32.load offset=12 - local.tee $2 - i32.const 1 - i32.add - local.tee $3 - i32.const 2 - call $~lib/array/ensureSize + i32.ge_u + if + local.get $1 + i32.const 0 + i32.lt_s + if + i32.const 280 + i32.const 512 + i32.const 109 + i32.const 21 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $3 + i32.const 2 + call $~lib/array/ensureSize + local.get $0 + local.get $3 + i32.store offset=12 + end local.get $0 i32.load offset=4 - local.get $2 + local.get $1 i32.const 2 i32.shl i32.add - local.get $1 + local.get $2 i32.store - local.get $0 - local.get $3 - i32.store offset=12 ) (func $~lib/array/Array#set:length (; 49 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) local.get $0 @@ -2867,11 +2881,11 @@ local.set $0 loop $loop|0 block $break|0 - local.get $0 + local.get $1 local.get $4 i32.ge_s br_if $break|0 - local.get $0 + local.get $1 i32.const 12 i32.mul local.get $3 @@ -2883,23 +2897,24 @@ i32.eqz if local.get $2 + local.get $0 local.get $5 i32.load offset=4 - call $~lib/array/Array#push - local.get $1 + call $~lib/array/Array#__set + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 end - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $loop|0 end end local.get $2 - local.get $1 + local.get $0 call $~lib/array/Array#set:length local.get $2 ) @@ -7694,45 +7709,7 @@ local.get $0 i32.load offset=4 ) - (func $~lib/array/Array#__set (; 108 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - local.get $1 - i32.const 0 - i32.lt_s - if - i32.const 280 - i32.const 512 - i32.const 109 - i32.const 21 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - local.tee $3 - i32.const 2 - call $~lib/array/ensureSize - local.get $0 - local.get $3 - i32.store offset=12 - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $2 - i32.store - ) - (func $~lib/map/Map#keys (; 109 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map#keys (; 108 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -7787,7 +7764,7 @@ call $~lib/array/Array#set:length local.get $2 ) - (func $~lib/map/Map#delete (; 110 ;) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#delete (; 109 ;) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 local.get $1 @@ -7846,7 +7823,7 @@ call $~lib/map/Map#rehash end ) - (func $std/map/testNumeric (; 111 ;) (type $FUNCSIG$v) + (func $std/map/testNumeric (; 110 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -8273,7 +8250,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $~lib/map/Map#constructor (; 112 ;) (result i32) + (func $~lib/map/Map#constructor (; 111 ;) (result i32) (local $0 i32) i32.const 24 i32.const 17 @@ -8301,7 +8278,7 @@ call $~lib/map/Map#clear local.get $0 ) - (func $~lib/map/Map#keys (; 113 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map#keys (; 112 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -8366,7 +8343,7 @@ call $~lib/array/Array#set:length local.get $1 ) - (func $~lib/map/Map#constructor (; 114 ;) (result i32) + (func $~lib/map/Map#constructor (; 113 ;) (result i32) (local $0 i32) i32.const 24 i32.const 19 @@ -8394,7 +8371,7 @@ call $~lib/map/Map#clear local.get $0 ) - (func $std/map/testNumeric (; 115 ;) (type $FUNCSIG$v) + (func $std/map/testNumeric (; 114 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -8821,7 +8798,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $~lib/map/Map#clear (; 116 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/map/Map#clear (; 115 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor @@ -8854,7 +8831,7 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/map/Map#constructor (; 117 ;) (result i32) + (func $~lib/map/Map#constructor (; 116 ;) (result i32) (local $0 i32) i32.const 24 i32.const 20 @@ -8882,7 +8859,7 @@ call $~lib/map/Map#clear local.get $0 ) - (func $~lib/util/hash/hash64 (; 118 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/util/hash/hash64 (; 117 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) (local $1 i32) local.get $0 i32.wrap_i64 @@ -8948,7 +8925,7 @@ i32.const 16777619 i32.mul ) - (func $~lib/map/Map#find (; 119 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + (func $~lib/map/Map#find (; 118 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) local.get $0 i32.load local.get $0 @@ -8991,7 +8968,7 @@ end i32.const 0 ) - (func $~lib/map/Map#has (; 120 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) + (func $~lib/map/Map#has (; 119 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) local.get $0 local.get $1 local.get $1 @@ -9000,7 +8977,7 @@ i32.const 0 i32.ne ) - (func $~lib/map/Map#rehash (; 121 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 120 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9132,7 +9109,7 @@ local.get $4 call $~lib/rt/pure/__release ) - (func $~lib/map/Map#set (; 122 ;) (type $FUNCSIG$viji) (param $0 i32) (param $1 i64) (param $2 i32) + (func $~lib/map/Map#set (; 121 ;) (type $FUNCSIG$viji) (param $0 i32) (param $1 i64) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -9222,7 +9199,7 @@ i32.store end ) - (func $~lib/map/Map#get (; 123 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) + (func $~lib/map/Map#get (; 122 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) local.get $0 local.get $1 local.get $1 @@ -9241,7 +9218,7 @@ local.get $0 i32.load offset=8 ) - (func $~lib/array/Array#__set (; 124 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/array/Array#__set (; 123 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) local.get $1 local.get $0 @@ -9279,7 +9256,7 @@ local.get $2 i64.store ) - (func $~lib/array/Array#set:length (; 125 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#set:length (; 124 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) local.get $0 i32.load offset=12 drop @@ -9291,7 +9268,7 @@ local.get $1 i32.store offset=12 ) - (func $~lib/map/Map#keys (; 126 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map#keys (; 125 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -9356,7 +9333,7 @@ call $~lib/array/Array#set:length local.get $1 ) - (func $~lib/map/Map#values (; 127 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map#values (; 126 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -9374,11 +9351,11 @@ local.set $0 loop $loop|0 block $break|0 - local.get $0 + local.get $1 local.get $4 i32.ge_s br_if $break|0 - local.get $0 + local.get $1 i32.const 4 i32.shl local.get $3 @@ -9390,27 +9367,28 @@ i32.eqz if local.get $2 + local.get $0 local.get $5 i32.load offset=8 - call $~lib/array/Array#push - local.get $1 + call $~lib/array/Array#__set + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 end - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $loop|0 end end local.get $2 - local.get $1 + local.get $0 call $~lib/array/Array#set:length local.get $2 ) - (func $~lib/map/Map#clear (; 128 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/map/Map#clear (; 127 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor @@ -9443,7 +9421,7 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/map/Map#constructor (; 129 ;) (result i32) + (func $~lib/map/Map#constructor (; 128 ;) (result i32) (local $0 i32) i32.const 24 i32.const 22 @@ -9471,7 +9449,7 @@ call $~lib/map/Map#clear local.get $0 ) - (func $~lib/array/Array#__get (; 130 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) + (func $~lib/array/Array#__get (; 129 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) local.get $1 local.get $0 i32.load offset=12 @@ -9492,7 +9470,7 @@ i32.add i64.load ) - (func $~lib/map/Map#find (; 131 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + (func $~lib/map/Map#find (; 130 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) local.get $0 i32.load local.get $0 @@ -9535,7 +9513,7 @@ end i32.const 0 ) - (func $~lib/map/Map#rehash (; 132 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 131 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9667,7 +9645,7 @@ local.get $4 call $~lib/rt/pure/__release ) - (func $~lib/map/Map#set (; 133 ;) (type $FUNCSIG$vijj) (param $0 i32) (param $1 i64) (param $2 i64) + (func $~lib/map/Map#set (; 132 ;) (type $FUNCSIG$vijj) (param $0 i32) (param $1 i64) (param $2 i64) (local $3 i32) (local $4 i32) (local $5 i32) @@ -9757,7 +9735,7 @@ i32.store end ) - (func $~lib/map/Map#delete (; 134 ;) (param $0 i32) (param $1 i64) + (func $~lib/map/Map#delete (; 133 ;) (param $0 i32) (param $1 i64) (local $2 i32) (local $3 i32) local.get $0 @@ -9817,7 +9795,7 @@ call $~lib/map/Map#rehash end ) - (func $std/map/testNumeric (; 135 ;) (type $FUNCSIG$v) + (func $std/map/testNumeric (; 134 ;) (type $FUNCSIG$v) (local $0 i64) (local $1 i32) (local $2 i32) @@ -10250,7 +10228,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $~lib/map/Map#constructor (; 136 ;) (result i32) + (func $~lib/map/Map#constructor (; 135 ;) (result i32) (local $0 i32) i32.const 24 i32.const 23 @@ -10278,7 +10256,7 @@ call $~lib/map/Map#clear local.get $0 ) - (func $~lib/map/Map#keys (; 137 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map#keys (; 136 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -10343,7 +10321,7 @@ call $~lib/array/Array#set:length local.get $1 ) - (func $~lib/map/Map#constructor (; 138 ;) (result i32) + (func $~lib/map/Map#constructor (; 137 ;) (result i32) (local $0 i32) i32.const 24 i32.const 25 @@ -10371,7 +10349,7 @@ call $~lib/map/Map#clear local.get $0 ) - (func $std/map/testNumeric (; 139 ;) (type $FUNCSIG$v) + (func $std/map/testNumeric (; 138 ;) (type $FUNCSIG$v) (local $0 i64) (local $1 i32) (local $2 i32) @@ -10804,7 +10782,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $~lib/map/Map#constructor (; 140 ;) (result i32) + (func $~lib/map/Map#constructor (; 139 ;) (result i32) (local $0 i32) i32.const 24 i32.const 26 @@ -10832,7 +10810,7 @@ call $~lib/map/Map#clear local.get $0 ) - (func $~lib/map/Map#find (; 141 ;) (type $FUNCSIG$iifi) (param $0 i32) (param $1 f32) (param $2 i32) (result i32) + (func $~lib/map/Map#find (; 140 ;) (type $FUNCSIG$iifi) (param $0 i32) (param $1 f32) (param $2 i32) (result i32) local.get $0 i32.load local.get $0 @@ -10875,7 +10853,7 @@ end i32.const 0 ) - (func $~lib/map/Map#has (; 142 ;) (type $FUNCSIG$iif) (param $0 i32) (param $1 f32) (result i32) + (func $~lib/map/Map#has (; 141 ;) (type $FUNCSIG$iif) (param $0 i32) (param $1 f32) (result i32) local.get $0 local.get $1 local.get $1 @@ -10885,7 +10863,7 @@ i32.const 0 i32.ne ) - (func $~lib/map/Map#rehash (; 143 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 142 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -11018,7 +10996,7 @@ local.get $4 call $~lib/rt/pure/__release ) - (func $~lib/map/Map#set (; 144 ;) (type $FUNCSIG$vifi) (param $0 i32) (param $1 f32) (param $2 i32) + (func $~lib/map/Map#set (; 143 ;) (type $FUNCSIG$vifi) (param $0 i32) (param $1 f32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -11109,7 +11087,7 @@ i32.store end ) - (func $~lib/map/Map#get (; 145 ;) (type $FUNCSIG$iif) (param $0 i32) (param $1 f32) (result i32) + (func $~lib/map/Map#get (; 144 ;) (type $FUNCSIG$iif) (param $0 i32) (param $1 f32) (result i32) local.get $0 local.get $1 local.get $1 @@ -11129,7 +11107,7 @@ local.get $0 i32.load offset=4 ) - (func $~lib/array/Array#__set (; 146 ;) (type $FUNCSIG$viif) (param $0 i32) (param $1 i32) (param $2 f32) + (func $~lib/array/Array#__set (; 145 ;) (type $FUNCSIG$viif) (param $0 i32) (param $1 i32) (param $2 f32) (local $3 i32) local.get $1 local.get $0 @@ -11167,7 +11145,7 @@ local.get $2 f32.store ) - (func $~lib/map/Map#keys (; 147 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map#keys (; 146 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -11232,7 +11210,7 @@ call $~lib/array/Array#set:length local.get $1 ) - (func $~lib/map/Map#constructor (; 148 ;) (result i32) + (func $~lib/map/Map#constructor (; 147 ;) (result i32) (local $0 i32) i32.const 24 i32.const 28 @@ -11260,7 +11238,7 @@ call $~lib/map/Map#clear local.get $0 ) - (func $~lib/array/Array#__get (; 149 ;) (type $FUNCSIG$fii) (param $0 i32) (param $1 i32) (result f32) + (func $~lib/array/Array#__get (; 148 ;) (type $FUNCSIG$fii) (param $0 i32) (param $1 i32) (result f32) local.get $1 local.get $0 i32.load offset=12 @@ -11281,7 +11259,7 @@ i32.add f32.load ) - (func $~lib/map/Map#rehash (; 150 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 149 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -11414,7 +11392,7 @@ local.get $4 call $~lib/rt/pure/__release ) - (func $~lib/map/Map#set (; 151 ;) (type $FUNCSIG$viff) (param $0 i32) (param $1 f32) (param $2 f32) + (func $~lib/map/Map#set (; 150 ;) (type $FUNCSIG$viff) (param $0 i32) (param $1 f32) (param $2 f32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -11505,7 +11483,7 @@ i32.store end ) - (func $~lib/map/Map#delete (; 152 ;) (param $0 i32) (param $1 f32) + (func $~lib/map/Map#delete (; 151 ;) (param $0 i32) (param $1 f32) (local $2 i32) (local $3 i32) local.get $0 @@ -11566,7 +11544,7 @@ call $~lib/map/Map#rehash end ) - (func $std/map/testNumeric (; 153 ;) (type $FUNCSIG$v) + (func $std/map/testNumeric (; 152 ;) (type $FUNCSIG$v) (local $0 f32) (local $1 i32) (local $2 i32) @@ -11999,7 +11977,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $~lib/map/Map#constructor (; 154 ;) (result i32) + (func $~lib/map/Map#constructor (; 153 ;) (result i32) (local $0 i32) i32.const 24 i32.const 29 @@ -12027,7 +12005,7 @@ call $~lib/map/Map#clear local.get $0 ) - (func $~lib/map/Map#find (; 155 ;) (type $FUNCSIG$iidi) (param $0 i32) (param $1 f64) (param $2 i32) (result i32) + (func $~lib/map/Map#find (; 154 ;) (type $FUNCSIG$iidi) (param $0 i32) (param $1 f64) (param $2 i32) (result i32) local.get $0 i32.load local.get $0 @@ -12070,7 +12048,7 @@ end i32.const 0 ) - (func $~lib/map/Map#has (; 156 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) + (func $~lib/map/Map#has (; 155 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) local.get $0 local.get $1 local.get $1 @@ -12080,7 +12058,7 @@ i32.const 0 i32.ne ) - (func $~lib/map/Map#rehash (; 157 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 156 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -12213,7 +12191,7 @@ local.get $4 call $~lib/rt/pure/__release ) - (func $~lib/map/Map#set (; 158 ;) (type $FUNCSIG$vidi) (param $0 i32) (param $1 f64) (param $2 i32) + (func $~lib/map/Map#set (; 157 ;) (type $FUNCSIG$vidi) (param $0 i32) (param $1 f64) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -12304,7 +12282,7 @@ i32.store end ) - (func $~lib/map/Map#get (; 159 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) + (func $~lib/map/Map#get (; 158 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) local.get $0 local.get $1 local.get $1 @@ -12324,7 +12302,7 @@ local.get $0 i32.load offset=8 ) - (func $~lib/array/Array#__set (; 160 ;) (type $FUNCSIG$viid) (param $0 i32) (param $1 i32) (param $2 f64) + (func $~lib/array/Array#__set (; 159 ;) (type $FUNCSIG$viid) (param $0 i32) (param $1 i32) (param $2 f64) (local $3 i32) local.get $1 local.get $0 @@ -12362,7 +12340,7 @@ local.get $2 f64.store ) - (func $~lib/map/Map#keys (; 161 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map#keys (; 160 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -12427,7 +12405,7 @@ call $~lib/array/Array#set:length local.get $1 ) - (func $~lib/map/Map#constructor (; 162 ;) (result i32) + (func $~lib/map/Map#constructor (; 161 ;) (result i32) (local $0 i32) i32.const 24 i32.const 31 @@ -12455,7 +12433,7 @@ call $~lib/map/Map#clear local.get $0 ) - (func $~lib/array/Array#__get (; 163 ;) (type $FUNCSIG$dii) (param $0 i32) (param $1 i32) (result f64) + (func $~lib/array/Array#__get (; 162 ;) (type $FUNCSIG$dii) (param $0 i32) (param $1 i32) (result f64) local.get $1 local.get $0 i32.load offset=12 @@ -12476,7 +12454,7 @@ i32.add f64.load ) - (func $~lib/map/Map#find (; 164 ;) (type $FUNCSIG$iidi) (param $0 i32) (param $1 f64) (param $2 i32) (result i32) + (func $~lib/map/Map#find (; 163 ;) (type $FUNCSIG$iidi) (param $0 i32) (param $1 f64) (param $2 i32) (result i32) local.get $0 i32.load local.get $0 @@ -12519,7 +12497,7 @@ end i32.const 0 ) - (func $~lib/map/Map#rehash (; 165 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 164 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -12652,7 +12630,7 @@ local.get $4 call $~lib/rt/pure/__release ) - (func $~lib/map/Map#set (; 166 ;) (type $FUNCSIG$vidd) (param $0 i32) (param $1 f64) (param $2 f64) + (func $~lib/map/Map#set (; 165 ;) (type $FUNCSIG$vidd) (param $0 i32) (param $1 f64) (param $2 f64) (local $3 i32) (local $4 i32) (local $5 i32) @@ -12743,7 +12721,7 @@ i32.store end ) - (func $~lib/map/Map#delete (; 167 ;) (param $0 i32) (param $1 f64) + (func $~lib/map/Map#delete (; 166 ;) (param $0 i32) (param $1 f64) (local $2 i32) (local $3 i32) local.get $0 @@ -12804,7 +12782,7 @@ call $~lib/map/Map#rehash end ) - (func $std/map/testNumeric (; 168 ;) (type $FUNCSIG$v) + (func $std/map/testNumeric (; 167 ;) (type $FUNCSIG$v) (local $0 f64) (local $1 i32) (local $2 i32) @@ -13237,7 +13215,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $start (; 169 ;) (type $FUNCSIG$v) + (func $start (; 168 ;) (type $FUNCSIG$v) call $std/map/testNumeric call $std/map/testNumeric call $std/map/testNumeric @@ -13249,7 +13227,7 @@ call $std/map/testNumeric call $std/map/testNumeric ) - (func $~lib/rt/pure/__visit (; 170 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/pure/__visit (; 169 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) local.get $0 i32.const 804 i32.lt_u @@ -13359,7 +13337,7 @@ unreachable end ) - (func $~lib/rt/__visit_members (; 171 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/__visit_members (; 170 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) block $folding-inner0 block $block$4$break block $switch$1$default @@ -13393,7 +13371,7 @@ local.get $1 call $~lib/rt/pure/__visit ) - (func $null (; 172 ;) (type $FUNCSIG$v) + (func $null (; 171 ;) (type $FUNCSIG$v) unreachable ) ) diff --git a/tests/compiler/std/map.untouched.wat b/tests/compiler/std/map.untouched.wat index 31638a560f..ba6047e2a5 100644 --- a/tests/compiler/std/map.untouched.wat +++ b/tests/compiler/std/map.untouched.wat @@ -4502,34 +4502,51 @@ i32.store offset=12 local.get $0 ) - (func $~lib/array/Array#push (; 52 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.load offset=12 - local.set $2 - local.get $2 - i32.const 1 - i32.add - local.set $3 - local.get $0 - local.get $3 - i32.const 2 - call $~lib/array/ensureSize + (func $~lib/array/Array#__unchecked_set (; 52 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $0 i32.load offset=4 - local.get $2 + local.get $1 i32.const 2 i32.shl i32.add - local.get $1 + local.get $2 i32.store + ) + (func $~lib/array/Array#__set (; 53 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + local.get $1 local.get $0 - local.get $3 - i32.store offset=12 - local.get $3 + i32.load offset=12 + i32.ge_u + if + local.get $1 + i32.const 0 + i32.lt_s + if + i32.const 280 + i32.const 512 + i32.const 109 + i32.const 21 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.const 2 + call $~lib/array/ensureSize + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.store offset=12 + end + local.get $0 + local.get $1 + local.get $2 + call $~lib/array/Array#__unchecked_set ) - (func $~lib/array/Array#set:length (; 53 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#set:length (; 54 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 i32.load offset=12 @@ -4542,7 +4559,7 @@ local.get $1 i32.store offset=12 ) - (func $~lib/map/Map#values (; 54 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map#values (; 55 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -4583,10 +4600,10 @@ i32.eqz if local.get $3 + local.get $4 local.get $6 i32.load offset=4 - call $~lib/array/Array#push - drop + call $~lib/array/Array#__set local.get $4 i32.const 1 i32.add @@ -4605,7 +4622,7 @@ call $~lib/array/Array#set:length local.get $3 ) - (func $~lib/map/Map#clear (; 55 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/map/Map#clear (; 56 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 @@ -4645,7 +4662,7 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/map/Map#constructor (; 56 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map#constructor (; 57 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -4677,7 +4694,7 @@ call $~lib/map/Map#clear local.get $0 ) - (func $~lib/map/Map#clear (; 57 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/map/Map#clear (; 58 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 @@ -4717,7 +4734,7 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/map/Map#constructor (; 58 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map#constructor (; 59 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -4749,11 +4766,11 @@ call $~lib/map/Map#clear local.get $0 ) - (func $~lib/array/Array#get:length (; 59 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#get:length (; 60 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array#__unchecked_get (; 60 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__unchecked_get (; 61 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $1 @@ -4762,7 +4779,7 @@ i32.add i32.load8_s ) - (func $~lib/array/Array#__get (; 61 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__get (; 62 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 local.get $0 @@ -4782,7 +4799,7 @@ local.set $2 local.get $2 ) - (func $~lib/array/Array#__unchecked_get (; 62 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__unchecked_get (; 63 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $1 @@ -4791,7 +4808,7 @@ i32.add i32.load ) - (func $~lib/array/Array#__get (; 63 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__get (; 64 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 local.get $0 @@ -4811,7 +4828,7 @@ local.set $2 local.get $2 ) - (func $~lib/map/Map#find (; 64 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/map/Map#find (; 65 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $0 i32.load @@ -4863,7 +4880,7 @@ end i32.const 0 ) - (func $~lib/map/Map#rehash (; 65 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 66 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -5020,7 +5037,7 @@ local.get $5 call $~lib/rt/pure/__release ) - (func $~lib/map/Map#set (; 66 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/map/Map#set (; 67 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -5127,7 +5144,7 @@ call $~lib/rt/pure/__release end ) - (func $~lib/util/hash/hash32 (; 67 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/hash/hash32 (; 68 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) i32.const -2128831035 local.set $1 @@ -5169,7 +5186,7 @@ local.set $1 local.get $1 ) - (func $~lib/map/Map#find (; 68 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/map/Map#find (; 69 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $0 i32.load @@ -5217,7 +5234,7 @@ end i32.const 0 ) - (func $~lib/map/Map#rehash (; 69 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 70 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -5374,7 +5391,7 @@ local.get $5 call $~lib/rt/pure/__release ) - (func $~lib/map/Map#set (; 70 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/map/Map#set (; 71 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -5477,15 +5494,15 @@ call $~lib/rt/pure/__release end ) - (func $~lib/map/Map#get:size (; 71 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map#get:size (; 72 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=20 ) - (func $~lib/map/Map#get:size (; 72 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map#get:size (; 73 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=20 ) - (func $~lib/map/Map#delete (; 73 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#delete (; 74 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -5561,7 +5578,7 @@ end i32.const 1 ) - (func $std/map/testNumeric (; 74 ;) (type $FUNCSIG$v) + (func $std/map/testNumeric (; 75 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -6051,7 +6068,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/map/Map#clear (; 75 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/map/Map#clear (; 76 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 @@ -6091,7 +6108,7 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/map/Map#constructor (; 76 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map#constructor (; 77 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -6123,7 +6140,7 @@ call $~lib/map/Map#clear local.get $0 ) - (func $~lib/map/Map#find (; 77 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/map/Map#find (; 78 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $0 i32.load @@ -6173,7 +6190,7 @@ end i32.const 0 ) - (func $~lib/map/Map#has (; 78 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#has (; 79 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 local.get $1 @@ -6190,7 +6207,7 @@ i32.const 0 i32.ne ) - (func $~lib/map/Map#rehash (; 79 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 80 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -6347,7 +6364,7 @@ local.get $5 call $~lib/rt/pure/__release ) - (func $~lib/map/Map#set (; 80 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/map/Map#set (; 81 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -6452,7 +6469,7 @@ call $~lib/rt/pure/__release end ) - (func $~lib/map/Map#get (; 81 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#get (; 82 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $0 @@ -6481,11 +6498,11 @@ local.get $3 i32.load offset=4 ) - (func $~lib/map/Map#get:size (; 82 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map#get:size (; 83 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=20 ) - (func $~lib/array/Array#constructor (; 83 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#constructor (; 84 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 if (result i32) local.get $0 @@ -6507,7 +6524,7 @@ i32.store offset=12 local.get $0 ) - (func $~lib/array/Array#__unchecked_set (; 84 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array#__unchecked_set (; 85 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $0 i32.load offset=4 local.get $1 @@ -6517,7 +6534,7 @@ local.get $2 i32.store8 ) - (func $~lib/array/Array#__set (; 85 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array#__set (; 86 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 local.get $0 i32.load offset=12 @@ -6551,7 +6568,7 @@ local.get $2 call $~lib/array/Array#__unchecked_set ) - (func $~lib/array/Array#set:length (; 86 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#set:length (; 87 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 i32.load offset=12 @@ -6564,7 +6581,7 @@ local.get $1 i32.store offset=12 ) - (func $~lib/map/Map#keys (; 87 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map#keys (; 88 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -6627,7 +6644,7 @@ call $~lib/array/Array#set:length local.get $3 ) - (func $~lib/map/Map#values (; 88 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map#values (; 89 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -6668,10 +6685,10 @@ i32.eqz if local.get $3 + local.get $4 local.get $6 i32.load offset=4 - call $~lib/array/Array#push - drop + call $~lib/array/Array#__set local.get $4 i32.const 1 i32.add @@ -6690,7 +6707,7 @@ call $~lib/array/Array#set:length local.get $3 ) - (func $~lib/map/Map#clear (; 89 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/map/Map#clear (; 90 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 @@ -6730,7 +6747,7 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/map/Map#constructor (; 90 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map#constructor (; 91 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -6762,11 +6779,11 @@ call $~lib/map/Map#clear local.get $0 ) - (func $~lib/array/Array#get:length (; 91 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#get:length (; 92 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array#__unchecked_get (; 92 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__unchecked_get (; 93 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $1 @@ -6775,7 +6792,7 @@ i32.add i32.load8_u ) - (func $~lib/array/Array#__get (; 93 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__get (; 94 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 local.get $0 @@ -6795,7 +6812,7 @@ local.set $2 local.get $2 ) - (func $~lib/map/Map#find (; 94 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/map/Map#find (; 95 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $0 i32.load @@ -6845,7 +6862,7 @@ end i32.const 0 ) - (func $~lib/map/Map#rehash (; 95 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 96 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -7002,7 +7019,7 @@ local.get $5 call $~lib/rt/pure/__release ) - (func $~lib/map/Map#set (; 96 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/map/Map#set (; 97 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -7107,11 +7124,11 @@ call $~lib/rt/pure/__release end ) - (func $~lib/map/Map#get:size (; 97 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map#get:size (; 98 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=20 ) - (func $~lib/map/Map#delete (; 98 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#delete (; 99 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -7185,7 +7202,7 @@ end i32.const 1 ) - (func $std/map/testNumeric (; 99 ;) (type $FUNCSIG$v) + (func $std/map/testNumeric (; 100 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -7661,7 +7678,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/map/Map#clear (; 100 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/map/Map#clear (; 101 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 @@ -7701,7 +7718,7 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/map/Map#constructor (; 101 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map#constructor (; 102 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -7733,7 +7750,7 @@ call $~lib/map/Map#clear local.get $0 ) - (func $~lib/util/hash/hash16 (; 102 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/hash/hash16 (; 103 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) i32.const -2128831035 local.set $1 @@ -7755,7 +7772,7 @@ local.set $1 local.get $1 ) - (func $~lib/map/Map#find (; 103 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/map/Map#find (; 104 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $0 i32.load @@ -7807,7 +7824,7 @@ end i32.const 0 ) - (func $~lib/map/Map#has (; 104 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#has (; 105 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 local.get $1 @@ -7826,7 +7843,7 @@ i32.const 0 i32.ne ) - (func $~lib/map/Map#rehash (; 105 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 106 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -7983,7 +8000,7 @@ local.get $5 call $~lib/rt/pure/__release ) - (func $~lib/map/Map#set (; 106 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/map/Map#set (; 107 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -8090,7 +8107,7 @@ call $~lib/rt/pure/__release end ) - (func $~lib/map/Map#get (; 107 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#get (; 108 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $0 @@ -8121,11 +8138,11 @@ local.get $3 i32.load offset=4 ) - (func $~lib/map/Map#get:size (; 108 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map#get:size (; 109 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=20 ) - (func $~lib/array/Array#constructor (; 109 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#constructor (; 110 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 if (result i32) local.get $0 @@ -8147,7 +8164,7 @@ i32.store offset=12 local.get $0 ) - (func $~lib/array/Array#__unchecked_set (; 110 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array#__unchecked_set (; 111 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $0 i32.load offset=4 local.get $1 @@ -8157,7 +8174,7 @@ local.get $2 i32.store16 ) - (func $~lib/array/Array#__set (; 111 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array#__set (; 112 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 local.get $0 i32.load offset=12 @@ -8191,7 +8208,7 @@ local.get $2 call $~lib/array/Array#__unchecked_set ) - (func $~lib/array/Array#set:length (; 112 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#set:length (; 113 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 i32.load offset=12 @@ -8204,7 +8221,7 @@ local.get $1 i32.store offset=12 ) - (func $~lib/map/Map#keys (; 113 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map#keys (; 114 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -8267,7 +8284,7 @@ call $~lib/array/Array#set:length local.get $3 ) - (func $~lib/map/Map#values (; 114 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map#values (; 115 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -8308,10 +8325,10 @@ i32.eqz if local.get $3 + local.get $4 local.get $6 i32.load offset=4 - call $~lib/array/Array#push - drop + call $~lib/array/Array#__set local.get $4 i32.const 1 i32.add @@ -8330,7 +8347,7 @@ call $~lib/array/Array#set:length local.get $3 ) - (func $~lib/map/Map#clear (; 115 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/map/Map#clear (; 116 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 @@ -8370,7 +8387,7 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/map/Map#constructor (; 116 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map#constructor (; 117 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -8402,11 +8419,11 @@ call $~lib/map/Map#clear local.get $0 ) - (func $~lib/array/Array#get:length (; 117 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#get:length (; 118 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array#__unchecked_get (; 118 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__unchecked_get (; 119 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $1 @@ -8415,7 +8432,7 @@ i32.add i32.load16_s ) - (func $~lib/array/Array#__get (; 119 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__get (; 120 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 local.get $0 @@ -8435,7 +8452,7 @@ local.set $2 local.get $2 ) - (func $~lib/map/Map#find (; 120 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/map/Map#find (; 121 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $0 i32.load @@ -8487,7 +8504,7 @@ end i32.const 0 ) - (func $~lib/map/Map#rehash (; 121 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 122 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8644,7 +8661,7 @@ local.get $5 call $~lib/rt/pure/__release ) - (func $~lib/map/Map#set (; 122 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/map/Map#set (; 123 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -8751,11 +8768,11 @@ call $~lib/rt/pure/__release end ) - (func $~lib/map/Map#get:size (; 123 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map#get:size (; 124 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=20 ) - (func $~lib/map/Map#delete (; 124 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#delete (; 125 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8831,7 +8848,7 @@ end i32.const 1 ) - (func $std/map/testNumeric (; 125 ;) (type $FUNCSIG$v) + (func $std/map/testNumeric (; 126 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -9321,7 +9338,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/map/Map#clear (; 126 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/map/Map#clear (; 127 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 @@ -9361,7 +9378,7 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/map/Map#constructor (; 127 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map#constructor (; 128 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -9393,7 +9410,7 @@ call $~lib/map/Map#clear local.get $0 ) - (func $~lib/map/Map#find (; 128 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/map/Map#find (; 129 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $0 i32.load @@ -9443,7 +9460,7 @@ end i32.const 0 ) - (func $~lib/map/Map#has (; 129 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#has (; 130 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 local.get $1 @@ -9460,7 +9477,7 @@ i32.const 0 i32.ne ) - (func $~lib/map/Map#rehash (; 130 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 131 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9617,7 +9634,7 @@ local.get $5 call $~lib/rt/pure/__release ) - (func $~lib/map/Map#set (; 131 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/map/Map#set (; 132 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -9722,7 +9739,7 @@ call $~lib/rt/pure/__release end ) - (func $~lib/map/Map#get (; 132 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#get (; 133 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $0 @@ -9751,11 +9768,11 @@ local.get $3 i32.load offset=4 ) - (func $~lib/map/Map#get:size (; 133 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map#get:size (; 134 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=20 ) - (func $~lib/array/Array#constructor (; 134 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#constructor (; 135 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 if (result i32) local.get $0 @@ -9777,7 +9794,7 @@ i32.store offset=12 local.get $0 ) - (func $~lib/array/Array#__unchecked_set (; 135 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array#__unchecked_set (; 136 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $0 i32.load offset=4 local.get $1 @@ -9787,7 +9804,7 @@ local.get $2 i32.store16 ) - (func $~lib/array/Array#__set (; 136 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array#__set (; 137 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 local.get $0 i32.load offset=12 @@ -9821,7 +9838,7 @@ local.get $2 call $~lib/array/Array#__unchecked_set ) - (func $~lib/array/Array#set:length (; 137 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#set:length (; 138 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 i32.load offset=12 @@ -9834,7 +9851,7 @@ local.get $1 i32.store offset=12 ) - (func $~lib/map/Map#keys (; 138 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map#keys (; 139 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -9897,7 +9914,7 @@ call $~lib/array/Array#set:length local.get $3 ) - (func $~lib/map/Map#values (; 139 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map#values (; 140 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -9938,10 +9955,10 @@ i32.eqz if local.get $3 + local.get $4 local.get $6 i32.load offset=4 - call $~lib/array/Array#push - drop + call $~lib/array/Array#__set local.get $4 i32.const 1 i32.add @@ -9960,7 +9977,7 @@ call $~lib/array/Array#set:length local.get $3 ) - (func $~lib/map/Map#clear (; 140 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/map/Map#clear (; 141 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 @@ -10000,7 +10017,7 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/map/Map#constructor (; 141 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map#constructor (; 142 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -10032,11 +10049,11 @@ call $~lib/map/Map#clear local.get $0 ) - (func $~lib/array/Array#get:length (; 142 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#get:length (; 143 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array#__unchecked_get (; 143 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__unchecked_get (; 144 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $1 @@ -10045,7 +10062,7 @@ i32.add i32.load16_u ) - (func $~lib/array/Array#__get (; 144 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__get (; 145 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 local.get $0 @@ -10065,7 +10082,7 @@ local.set $2 local.get $2 ) - (func $~lib/map/Map#find (; 145 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/map/Map#find (; 146 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $0 i32.load @@ -10115,7 +10132,7 @@ end i32.const 0 ) - (func $~lib/map/Map#rehash (; 146 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 147 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -10272,7 +10289,7 @@ local.get $5 call $~lib/rt/pure/__release ) - (func $~lib/map/Map#set (; 147 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/map/Map#set (; 148 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -10377,11 +10394,11 @@ call $~lib/rt/pure/__release end ) - (func $~lib/map/Map#get:size (; 148 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map#get:size (; 149 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=20 ) - (func $~lib/map/Map#delete (; 149 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#delete (; 150 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -10455,7 +10472,7 @@ end i32.const 1 ) - (func $std/map/testNumeric (; 150 ;) (type $FUNCSIG$v) + (func $std/map/testNumeric (; 151 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -10931,7 +10948,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/map/Map#has (; 151 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#has (; 152 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 local.get $1 @@ -10946,7 +10963,7 @@ i32.const 0 i32.ne ) - (func $~lib/map/Map#get (; 152 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#get (; 153 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $0 @@ -10973,51 +10990,7 @@ local.get $3 i32.load offset=4 ) - (func $~lib/array/Array#__unchecked_set (; 153 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $2 - i32.store - ) - (func $~lib/array/Array#__set (; 154 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - local.get $1 - i32.const 0 - i32.lt_s - if - i32.const 280 - i32.const 512 - i32.const 109 - i32.const 21 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.const 2 - call $~lib/array/ensureSize - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=12 - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array#__unchecked_set - ) - (func $~lib/map/Map#keys (; 155 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map#keys (; 154 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -11080,7 +11053,7 @@ call $~lib/array/Array#set:length local.get $3 ) - (func $~lib/map/Map#values (; 156 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map#values (; 155 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -11121,10 +11094,10 @@ i32.eqz if local.get $3 + local.get $4 local.get $6 i32.load offset=4 - call $~lib/array/Array#push - drop + call $~lib/array/Array#__set local.get $4 i32.const 1 i32.add @@ -11143,11 +11116,11 @@ call $~lib/array/Array#set:length local.get $3 ) - (func $~lib/array/Array#get:length (; 157 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#get:length (; 156 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/map/Map#delete (; 158 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#delete (; 157 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -11219,7 +11192,7 @@ end i32.const 1 ) - (func $std/map/testNumeric (; 159 ;) (type $FUNCSIG$v) + (func $std/map/testNumeric (; 158 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -11681,7 +11654,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/map/Map#clear (; 160 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/map/Map#clear (; 159 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 @@ -11721,7 +11694,7 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/map/Map#constructor (; 161 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map#constructor (; 160 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -11753,7 +11726,7 @@ call $~lib/map/Map#clear local.get $0 ) - (func $~lib/map/Map#find (; 162 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/map/Map#find (; 161 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $0 i32.load @@ -11801,7 +11774,7 @@ end i32.const 0 ) - (func $~lib/map/Map#has (; 163 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#has (; 162 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 local.get $1 @@ -11816,7 +11789,7 @@ i32.const 0 i32.ne ) - (func $~lib/map/Map#rehash (; 164 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 163 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -11973,7 +11946,7 @@ local.get $5 call $~lib/rt/pure/__release ) - (func $~lib/map/Map#set (; 165 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/map/Map#set (; 164 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -12076,7 +12049,7 @@ call $~lib/rt/pure/__release end ) - (func $~lib/map/Map#get (; 166 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#get (; 165 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $0 @@ -12103,11 +12076,11 @@ local.get $3 i32.load offset=4 ) - (func $~lib/map/Map#get:size (; 167 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map#get:size (; 166 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=20 ) - (func $~lib/array/Array#constructor (; 168 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#constructor (; 167 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 if (result i32) local.get $0 @@ -12129,7 +12102,7 @@ i32.store offset=12 local.get $0 ) - (func $~lib/array/Array#__unchecked_set (; 169 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array#__unchecked_set (; 168 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $0 i32.load offset=4 local.get $1 @@ -12139,7 +12112,7 @@ local.get $2 i32.store ) - (func $~lib/array/Array#__set (; 170 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array#__set (; 169 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 local.get $0 i32.load offset=12 @@ -12173,7 +12146,7 @@ local.get $2 call $~lib/array/Array#__unchecked_set ) - (func $~lib/array/Array#set:length (; 171 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#set:length (; 170 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 i32.load offset=12 @@ -12186,7 +12159,7 @@ local.get $1 i32.store offset=12 ) - (func $~lib/map/Map#keys (; 172 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map#keys (; 171 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -12249,7 +12222,7 @@ call $~lib/array/Array#set:length local.get $3 ) - (func $~lib/map/Map#values (; 173 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map#values (; 172 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -12290,10 +12263,10 @@ i32.eqz if local.get $3 + local.get $4 local.get $6 i32.load offset=4 - call $~lib/array/Array#push - drop + call $~lib/array/Array#__set local.get $4 i32.const 1 i32.add @@ -12312,7 +12285,7 @@ call $~lib/array/Array#set:length local.get $3 ) - (func $~lib/map/Map#clear (; 174 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/map/Map#clear (; 173 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 @@ -12352,7 +12325,7 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/map/Map#constructor (; 175 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map#constructor (; 174 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -12384,11 +12357,11 @@ call $~lib/map/Map#clear local.get $0 ) - (func $~lib/array/Array#get:length (; 176 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#get:length (; 175 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array#__unchecked_get (; 177 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__unchecked_get (; 176 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $1 @@ -12397,7 +12370,7 @@ i32.add i32.load ) - (func $~lib/array/Array#__get (; 178 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__get (; 177 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 local.get $0 @@ -12417,7 +12390,7 @@ local.set $2 local.get $2 ) - (func $~lib/map/Map#find (; 179 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/map/Map#find (; 178 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $0 i32.load @@ -12465,7 +12438,7 @@ end i32.const 0 ) - (func $~lib/map/Map#rehash (; 180 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 179 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -12622,7 +12595,7 @@ local.get $5 call $~lib/rt/pure/__release ) - (func $~lib/map/Map#set (; 181 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/map/Map#set (; 180 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -12725,11 +12698,11 @@ call $~lib/rt/pure/__release end ) - (func $~lib/map/Map#get:size (; 182 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map#get:size (; 181 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=20 ) - (func $~lib/map/Map#delete (; 183 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#delete (; 182 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -12801,7 +12774,7 @@ end i32.const 1 ) - (func $std/map/testNumeric (; 184 ;) (type $FUNCSIG$v) + (func $std/map/testNumeric (; 183 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -13263,7 +13236,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/map/Map#clear (; 185 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/map/Map#clear (; 184 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 @@ -13303,7 +13276,7 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/map/Map#constructor (; 186 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map#constructor (; 185 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -13335,7 +13308,7 @@ call $~lib/map/Map#clear local.get $0 ) - (func $~lib/util/hash/hash64 (; 187 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/util/hash/hash64 (; 186 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -13423,7 +13396,7 @@ local.set $3 local.get $3 ) - (func $~lib/map/Map#find (; 188 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + (func $~lib/map/Map#find (; 187 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) (local $3 i32) local.get $0 i32.load @@ -13471,7 +13444,7 @@ end i32.const 0 ) - (func $~lib/map/Map#has (; 189 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) + (func $~lib/map/Map#has (; 188 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) (local $2 i64) local.get $0 local.get $1 @@ -13486,7 +13459,7 @@ i32.const 0 i32.ne ) - (func $~lib/map/Map#rehash (; 190 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 189 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -13644,7 +13617,7 @@ local.get $5 call $~lib/rt/pure/__release ) - (func $~lib/map/Map#set (; 191 ;) (type $FUNCSIG$viji) (param $0 i32) (param $1 i64) (param $2 i32) + (func $~lib/map/Map#set (; 190 ;) (type $FUNCSIG$viji) (param $0 i32) (param $1 i64) (param $2 i32) (local $3 i64) (local $4 i32) (local $5 i32) @@ -13748,7 +13721,7 @@ call $~lib/rt/pure/__release end ) - (func $~lib/map/Map#get (; 192 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) + (func $~lib/map/Map#get (; 191 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) (local $2 i64) (local $3 i32) local.get $0 @@ -13775,11 +13748,11 @@ local.get $3 i32.load offset=8 ) - (func $~lib/map/Map#get:size (; 193 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map#get:size (; 192 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=20 ) - (func $~lib/array/Array#constructor (; 194 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#constructor (; 193 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 if (result i32) local.get $0 @@ -13801,7 +13774,7 @@ i32.store offset=12 local.get $0 ) - (func $~lib/array/Array#__unchecked_set (; 195 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/array/Array#__unchecked_set (; 194 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) local.get $0 i32.load offset=4 local.get $1 @@ -13811,7 +13784,7 @@ local.get $2 i64.store ) - (func $~lib/array/Array#__set (; 196 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/array/Array#__set (; 195 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) local.get $1 local.get $0 i32.load offset=12 @@ -13845,7 +13818,7 @@ local.get $2 call $~lib/array/Array#__unchecked_set ) - (func $~lib/array/Array#set:length (; 197 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#set:length (; 196 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 i32.load offset=12 @@ -13858,7 +13831,7 @@ local.get $1 i32.store offset=12 ) - (func $~lib/map/Map#keys (; 198 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map#keys (; 197 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -13921,7 +13894,7 @@ call $~lib/array/Array#set:length local.get $3 ) - (func $~lib/map/Map#values (; 199 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map#values (; 198 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -13962,10 +13935,10 @@ i32.eqz if local.get $3 + local.get $4 local.get $6 i32.load offset=8 - call $~lib/array/Array#push - drop + call $~lib/array/Array#__set local.get $4 i32.const 1 i32.add @@ -13984,7 +13957,7 @@ call $~lib/array/Array#set:length local.get $3 ) - (func $~lib/map/Map#clear (; 200 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/map/Map#clear (; 199 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 @@ -14024,7 +13997,7 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/map/Map#constructor (; 201 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map#constructor (; 200 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -14056,11 +14029,11 @@ call $~lib/map/Map#clear local.get $0 ) - (func $~lib/array/Array#get:length (; 202 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#get:length (; 201 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array#__unchecked_get (; 203 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) + (func $~lib/array/Array#__unchecked_get (; 202 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) local.get $0 i32.load offset=4 local.get $1 @@ -14069,7 +14042,7 @@ i32.add i64.load ) - (func $~lib/array/Array#__get (; 204 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) + (func $~lib/array/Array#__get (; 203 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) (local $2 i64) local.get $1 local.get $0 @@ -14089,7 +14062,7 @@ local.set $2 local.get $2 ) - (func $~lib/map/Map#find (; 205 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + (func $~lib/map/Map#find (; 204 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) (local $3 i32) local.get $0 i32.load @@ -14137,7 +14110,7 @@ end i32.const 0 ) - (func $~lib/map/Map#rehash (; 206 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 205 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -14295,7 +14268,7 @@ local.get $5 call $~lib/rt/pure/__release ) - (func $~lib/map/Map#set (; 207 ;) (type $FUNCSIG$vijj) (param $0 i32) (param $1 i64) (param $2 i64) + (func $~lib/map/Map#set (; 206 ;) (type $FUNCSIG$vijj) (param $0 i32) (param $1 i64) (param $2 i64) (local $3 i64) (local $4 i32) (local $5 i32) @@ -14399,11 +14372,11 @@ call $~lib/rt/pure/__release end ) - (func $~lib/map/Map#get:size (; 208 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map#get:size (; 207 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=20 ) - (func $~lib/map/Map#delete (; 209 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) + (func $~lib/map/Map#delete (; 208 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) (local $2 i64) (local $3 i32) (local $4 i32) @@ -14476,7 +14449,7 @@ end i32.const 1 ) - (func $std/map/testNumeric (; 210 ;) (type $FUNCSIG$v) + (func $std/map/testNumeric (; 209 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i64) (local $2 i32) @@ -14946,7 +14919,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/map/Map#clear (; 211 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/map/Map#clear (; 210 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 @@ -14986,7 +14959,7 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/map/Map#constructor (; 212 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map#constructor (; 211 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -15018,7 +14991,7 @@ call $~lib/map/Map#clear local.get $0 ) - (func $~lib/map/Map#find (; 213 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + (func $~lib/map/Map#find (; 212 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) (local $3 i32) local.get $0 i32.load @@ -15066,7 +15039,7 @@ end i32.const 0 ) - (func $~lib/map/Map#has (; 214 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) + (func $~lib/map/Map#has (; 213 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) (local $2 i64) local.get $0 local.get $1 @@ -15081,7 +15054,7 @@ i32.const 0 i32.ne ) - (func $~lib/map/Map#rehash (; 215 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 214 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -15239,7 +15212,7 @@ local.get $5 call $~lib/rt/pure/__release ) - (func $~lib/map/Map#set (; 216 ;) (type $FUNCSIG$viji) (param $0 i32) (param $1 i64) (param $2 i32) + (func $~lib/map/Map#set (; 215 ;) (type $FUNCSIG$viji) (param $0 i32) (param $1 i64) (param $2 i32) (local $3 i64) (local $4 i32) (local $5 i32) @@ -15343,7 +15316,7 @@ call $~lib/rt/pure/__release end ) - (func $~lib/map/Map#get (; 217 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) + (func $~lib/map/Map#get (; 216 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) (local $2 i64) (local $3 i32) local.get $0 @@ -15370,11 +15343,11 @@ local.get $3 i32.load offset=8 ) - (func $~lib/map/Map#get:size (; 218 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map#get:size (; 217 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=20 ) - (func $~lib/array/Array#constructor (; 219 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#constructor (; 218 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 if (result i32) local.get $0 @@ -15396,7 +15369,7 @@ i32.store offset=12 local.get $0 ) - (func $~lib/array/Array#__unchecked_set (; 220 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/array/Array#__unchecked_set (; 219 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) local.get $0 i32.load offset=4 local.get $1 @@ -15406,7 +15379,7 @@ local.get $2 i64.store ) - (func $~lib/array/Array#__set (; 221 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/array/Array#__set (; 220 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) local.get $1 local.get $0 i32.load offset=12 @@ -15440,7 +15413,7 @@ local.get $2 call $~lib/array/Array#__unchecked_set ) - (func $~lib/array/Array#set:length (; 222 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#set:length (; 221 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 i32.load offset=12 @@ -15453,7 +15426,7 @@ local.get $1 i32.store offset=12 ) - (func $~lib/map/Map#keys (; 223 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map#keys (; 222 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -15516,7 +15489,7 @@ call $~lib/array/Array#set:length local.get $3 ) - (func $~lib/map/Map#values (; 224 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map#values (; 223 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -15557,10 +15530,10 @@ i32.eqz if local.get $3 + local.get $4 local.get $6 i32.load offset=8 - call $~lib/array/Array#push - drop + call $~lib/array/Array#__set local.get $4 i32.const 1 i32.add @@ -15579,7 +15552,7 @@ call $~lib/array/Array#set:length local.get $3 ) - (func $~lib/map/Map#clear (; 225 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/map/Map#clear (; 224 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 @@ -15619,7 +15592,7 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/map/Map#constructor (; 226 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map#constructor (; 225 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -15651,11 +15624,11 @@ call $~lib/map/Map#clear local.get $0 ) - (func $~lib/array/Array#get:length (; 227 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#get:length (; 226 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array#__unchecked_get (; 228 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) + (func $~lib/array/Array#__unchecked_get (; 227 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) local.get $0 i32.load offset=4 local.get $1 @@ -15664,7 +15637,7 @@ i32.add i64.load ) - (func $~lib/array/Array#__get (; 229 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) + (func $~lib/array/Array#__get (; 228 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) (local $2 i64) local.get $1 local.get $0 @@ -15684,7 +15657,7 @@ local.set $2 local.get $2 ) - (func $~lib/map/Map#find (; 230 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + (func $~lib/map/Map#find (; 229 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) (local $3 i32) local.get $0 i32.load @@ -15732,7 +15705,7 @@ end i32.const 0 ) - (func $~lib/map/Map#rehash (; 231 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 230 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -15890,7 +15863,7 @@ local.get $5 call $~lib/rt/pure/__release ) - (func $~lib/map/Map#set (; 232 ;) (type $FUNCSIG$vijj) (param $0 i32) (param $1 i64) (param $2 i64) + (func $~lib/map/Map#set (; 231 ;) (type $FUNCSIG$vijj) (param $0 i32) (param $1 i64) (param $2 i64) (local $3 i64) (local $4 i32) (local $5 i32) @@ -15994,11 +15967,11 @@ call $~lib/rt/pure/__release end ) - (func $~lib/map/Map#get:size (; 233 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map#get:size (; 232 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=20 ) - (func $~lib/map/Map#delete (; 234 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) + (func $~lib/map/Map#delete (; 233 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) (local $2 i64) (local $3 i32) (local $4 i32) @@ -16071,7 +16044,7 @@ end i32.const 1 ) - (func $std/map/testNumeric (; 235 ;) (type $FUNCSIG$v) + (func $std/map/testNumeric (; 234 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i64) (local $2 i32) @@ -16541,7 +16514,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/map/Map#clear (; 236 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/map/Map#clear (; 235 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 @@ -16581,7 +16554,7 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/map/Map#constructor (; 237 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map#constructor (; 236 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -16613,7 +16586,7 @@ call $~lib/map/Map#clear local.get $0 ) - (func $~lib/map/Map#find (; 238 ;) (type $FUNCSIG$iifi) (param $0 i32) (param $1 f32) (param $2 i32) (result i32) + (func $~lib/map/Map#find (; 237 ;) (type $FUNCSIG$iifi) (param $0 i32) (param $1 f32) (param $2 i32) (result i32) (local $3 i32) local.get $0 i32.load @@ -16661,7 +16634,7 @@ end i32.const 0 ) - (func $~lib/map/Map#has (; 239 ;) (type $FUNCSIG$iif) (param $0 i32) (param $1 f32) (result i32) + (func $~lib/map/Map#has (; 238 ;) (type $FUNCSIG$iif) (param $0 i32) (param $1 f32) (result i32) (local $2 f32) local.get $0 local.get $1 @@ -16677,7 +16650,7 @@ i32.const 0 i32.ne ) - (func $~lib/map/Map#rehash (; 240 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 239 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -16836,7 +16809,7 @@ local.get $5 call $~lib/rt/pure/__release ) - (func $~lib/map/Map#set (; 241 ;) (type $FUNCSIG$vifi) (param $0 i32) (param $1 f32) (param $2 i32) + (func $~lib/map/Map#set (; 240 ;) (type $FUNCSIG$vifi) (param $0 i32) (param $1 f32) (param $2 i32) (local $3 f32) (local $4 i32) (local $5 i32) @@ -16941,7 +16914,7 @@ call $~lib/rt/pure/__release end ) - (func $~lib/map/Map#get (; 242 ;) (type $FUNCSIG$iif) (param $0 i32) (param $1 f32) (result i32) + (func $~lib/map/Map#get (; 241 ;) (type $FUNCSIG$iif) (param $0 i32) (param $1 f32) (result i32) (local $2 f32) (local $3 i32) local.get $0 @@ -16969,11 +16942,11 @@ local.get $3 i32.load offset=4 ) - (func $~lib/map/Map#get:size (; 243 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map#get:size (; 242 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=20 ) - (func $~lib/array/Array#constructor (; 244 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#constructor (; 243 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 if (result i32) local.get $0 @@ -16995,7 +16968,7 @@ i32.store offset=12 local.get $0 ) - (func $~lib/array/Array#__unchecked_set (; 245 ;) (type $FUNCSIG$viif) (param $0 i32) (param $1 i32) (param $2 f32) + (func $~lib/array/Array#__unchecked_set (; 244 ;) (type $FUNCSIG$viif) (param $0 i32) (param $1 i32) (param $2 f32) local.get $0 i32.load offset=4 local.get $1 @@ -17005,7 +16978,7 @@ local.get $2 f32.store ) - (func $~lib/array/Array#__set (; 246 ;) (type $FUNCSIG$viif) (param $0 i32) (param $1 i32) (param $2 f32) + (func $~lib/array/Array#__set (; 245 ;) (type $FUNCSIG$viif) (param $0 i32) (param $1 i32) (param $2 f32) local.get $1 local.get $0 i32.load offset=12 @@ -17039,7 +17012,7 @@ local.get $2 call $~lib/array/Array#__unchecked_set ) - (func $~lib/array/Array#set:length (; 247 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#set:length (; 246 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 i32.load offset=12 @@ -17052,7 +17025,7 @@ local.get $1 i32.store offset=12 ) - (func $~lib/map/Map#keys (; 248 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map#keys (; 247 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -17115,7 +17088,7 @@ call $~lib/array/Array#set:length local.get $3 ) - (func $~lib/map/Map#values (; 249 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map#values (; 248 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -17156,10 +17129,10 @@ i32.eqz if local.get $3 + local.get $4 local.get $6 i32.load offset=4 - call $~lib/array/Array#push - drop + call $~lib/array/Array#__set local.get $4 i32.const 1 i32.add @@ -17178,7 +17151,7 @@ call $~lib/array/Array#set:length local.get $3 ) - (func $~lib/map/Map#clear (; 250 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/map/Map#clear (; 249 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 @@ -17218,7 +17191,7 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/map/Map#constructor (; 251 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map#constructor (; 250 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -17250,11 +17223,11 @@ call $~lib/map/Map#clear local.get $0 ) - (func $~lib/array/Array#get:length (; 252 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#get:length (; 251 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array#__unchecked_get (; 253 ;) (type $FUNCSIG$fii) (param $0 i32) (param $1 i32) (result f32) + (func $~lib/array/Array#__unchecked_get (; 252 ;) (type $FUNCSIG$fii) (param $0 i32) (param $1 i32) (result f32) local.get $0 i32.load offset=4 local.get $1 @@ -17263,7 +17236,7 @@ i32.add f32.load ) - (func $~lib/array/Array#__get (; 254 ;) (type $FUNCSIG$fii) (param $0 i32) (param $1 i32) (result f32) + (func $~lib/array/Array#__get (; 253 ;) (type $FUNCSIG$fii) (param $0 i32) (param $1 i32) (result f32) (local $2 f32) local.get $1 local.get $0 @@ -17283,7 +17256,7 @@ local.set $2 local.get $2 ) - (func $~lib/map/Map#find (; 255 ;) (type $FUNCSIG$iifi) (param $0 i32) (param $1 f32) (param $2 i32) (result i32) + (func $~lib/map/Map#find (; 254 ;) (type $FUNCSIG$iifi) (param $0 i32) (param $1 f32) (param $2 i32) (result i32) (local $3 i32) local.get $0 i32.load @@ -17331,7 +17304,7 @@ end i32.const 0 ) - (func $~lib/map/Map#rehash (; 256 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 255 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -17490,7 +17463,7 @@ local.get $5 call $~lib/rt/pure/__release ) - (func $~lib/map/Map#set (; 257 ;) (type $FUNCSIG$viff) (param $0 i32) (param $1 f32) (param $2 f32) + (func $~lib/map/Map#set (; 256 ;) (type $FUNCSIG$viff) (param $0 i32) (param $1 f32) (param $2 f32) (local $3 f32) (local $4 i32) (local $5 i32) @@ -17595,11 +17568,11 @@ call $~lib/rt/pure/__release end ) - (func $~lib/map/Map#get:size (; 258 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map#get:size (; 257 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=20 ) - (func $~lib/map/Map#delete (; 259 ;) (type $FUNCSIG$iif) (param $0 i32) (param $1 f32) (result i32) + (func $~lib/map/Map#delete (; 258 ;) (type $FUNCSIG$iif) (param $0 i32) (param $1 f32) (result i32) (local $2 f32) (local $3 i32) (local $4 i32) @@ -17673,7 +17646,7 @@ end i32.const 1 ) - (func $std/map/testNumeric (; 260 ;) (type $FUNCSIG$v) + (func $std/map/testNumeric (; 259 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 f32) (local $2 i32) @@ -18143,7 +18116,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/map/Map#clear (; 261 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/map/Map#clear (; 260 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 @@ -18183,7 +18156,7 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/map/Map#constructor (; 262 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map#constructor (; 261 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -18215,7 +18188,7 @@ call $~lib/map/Map#clear local.get $0 ) - (func $~lib/map/Map#find (; 263 ;) (type $FUNCSIG$iidi) (param $0 i32) (param $1 f64) (param $2 i32) (result i32) + (func $~lib/map/Map#find (; 262 ;) (type $FUNCSIG$iidi) (param $0 i32) (param $1 f64) (param $2 i32) (result i32) (local $3 i32) local.get $0 i32.load @@ -18263,7 +18236,7 @@ end i32.const 0 ) - (func $~lib/map/Map#has (; 264 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) + (func $~lib/map/Map#has (; 263 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) (local $2 f64) local.get $0 local.get $1 @@ -18279,7 +18252,7 @@ i32.const 0 i32.ne ) - (func $~lib/map/Map#rehash (; 265 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 264 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -18438,7 +18411,7 @@ local.get $5 call $~lib/rt/pure/__release ) - (func $~lib/map/Map#set (; 266 ;) (type $FUNCSIG$vidi) (param $0 i32) (param $1 f64) (param $2 i32) + (func $~lib/map/Map#set (; 265 ;) (type $FUNCSIG$vidi) (param $0 i32) (param $1 f64) (param $2 i32) (local $3 f64) (local $4 i32) (local $5 i32) @@ -18543,7 +18516,7 @@ call $~lib/rt/pure/__release end ) - (func $~lib/map/Map#get (; 267 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) + (func $~lib/map/Map#get (; 266 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) (local $2 f64) (local $3 i32) local.get $0 @@ -18571,11 +18544,11 @@ local.get $3 i32.load offset=8 ) - (func $~lib/map/Map#get:size (; 268 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map#get:size (; 267 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=20 ) - (func $~lib/array/Array#constructor (; 269 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#constructor (; 268 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 if (result i32) local.get $0 @@ -18597,7 +18570,7 @@ i32.store offset=12 local.get $0 ) - (func $~lib/array/Array#__unchecked_set (; 270 ;) (type $FUNCSIG$viid) (param $0 i32) (param $1 i32) (param $2 f64) + (func $~lib/array/Array#__unchecked_set (; 269 ;) (type $FUNCSIG$viid) (param $0 i32) (param $1 i32) (param $2 f64) local.get $0 i32.load offset=4 local.get $1 @@ -18607,7 +18580,7 @@ local.get $2 f64.store ) - (func $~lib/array/Array#__set (; 271 ;) (type $FUNCSIG$viid) (param $0 i32) (param $1 i32) (param $2 f64) + (func $~lib/array/Array#__set (; 270 ;) (type $FUNCSIG$viid) (param $0 i32) (param $1 i32) (param $2 f64) local.get $1 local.get $0 i32.load offset=12 @@ -18641,7 +18614,7 @@ local.get $2 call $~lib/array/Array#__unchecked_set ) - (func $~lib/array/Array#set:length (; 272 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#set:length (; 271 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 i32.load offset=12 @@ -18654,7 +18627,7 @@ local.get $1 i32.store offset=12 ) - (func $~lib/map/Map#keys (; 273 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map#keys (; 272 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -18717,7 +18690,7 @@ call $~lib/array/Array#set:length local.get $3 ) - (func $~lib/map/Map#values (; 274 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map#values (; 273 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -18758,10 +18731,10 @@ i32.eqz if local.get $3 + local.get $4 local.get $6 i32.load offset=8 - call $~lib/array/Array#push - drop + call $~lib/array/Array#__set local.get $4 i32.const 1 i32.add @@ -18780,7 +18753,7 @@ call $~lib/array/Array#set:length local.get $3 ) - (func $~lib/map/Map#clear (; 275 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/map/Map#clear (; 274 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 @@ -18820,7 +18793,7 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/map/Map#constructor (; 276 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map#constructor (; 275 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -18852,11 +18825,11 @@ call $~lib/map/Map#clear local.get $0 ) - (func $~lib/array/Array#get:length (; 277 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#get:length (; 276 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array#__unchecked_get (; 278 ;) (type $FUNCSIG$dii) (param $0 i32) (param $1 i32) (result f64) + (func $~lib/array/Array#__unchecked_get (; 277 ;) (type $FUNCSIG$dii) (param $0 i32) (param $1 i32) (result f64) local.get $0 i32.load offset=4 local.get $1 @@ -18865,7 +18838,7 @@ i32.add f64.load ) - (func $~lib/array/Array#__get (; 279 ;) (type $FUNCSIG$dii) (param $0 i32) (param $1 i32) (result f64) + (func $~lib/array/Array#__get (; 278 ;) (type $FUNCSIG$dii) (param $0 i32) (param $1 i32) (result f64) (local $2 f64) local.get $1 local.get $0 @@ -18885,7 +18858,7 @@ local.set $2 local.get $2 ) - (func $~lib/map/Map#find (; 280 ;) (type $FUNCSIG$iidi) (param $0 i32) (param $1 f64) (param $2 i32) (result i32) + (func $~lib/map/Map#find (; 279 ;) (type $FUNCSIG$iidi) (param $0 i32) (param $1 f64) (param $2 i32) (result i32) (local $3 i32) local.get $0 i32.load @@ -18933,7 +18906,7 @@ end i32.const 0 ) - (func $~lib/map/Map#rehash (; 281 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 280 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -19092,7 +19065,7 @@ local.get $5 call $~lib/rt/pure/__release ) - (func $~lib/map/Map#set (; 282 ;) (type $FUNCSIG$vidd) (param $0 i32) (param $1 f64) (param $2 f64) + (func $~lib/map/Map#set (; 281 ;) (type $FUNCSIG$vidd) (param $0 i32) (param $1 f64) (param $2 f64) (local $3 f64) (local $4 i32) (local $5 i32) @@ -19197,11 +19170,11 @@ call $~lib/rt/pure/__release end ) - (func $~lib/map/Map#get:size (; 283 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map#get:size (; 282 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=20 ) - (func $~lib/map/Map#delete (; 284 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) + (func $~lib/map/Map#delete (; 283 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) (local $2 f64) (local $3 i32) (local $4 i32) @@ -19275,7 +19248,7 @@ end i32.const 1 ) - (func $std/map/testNumeric (; 285 ;) (type $FUNCSIG$v) + (func $std/map/testNumeric (; 284 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 f64) (local $2 i32) @@ -19745,7 +19718,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $start:std/map (; 286 ;) (type $FUNCSIG$v) + (func $start:std/map (; 285 ;) (type $FUNCSIG$v) call $std/map/testNumeric call $std/map/testNumeric call $std/map/testNumeric @@ -19757,10 +19730,10 @@ call $std/map/testNumeric call $std/map/testNumeric ) - (func $start (; 287 ;) (type $FUNCSIG$v) + (func $start (; 286 ;) (type $FUNCSIG$v) call $start:std/map ) - (func $~lib/rt/pure/__visit (; 288 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/pure/__visit (; 287 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) local.get $0 @@ -19890,7 +19863,7 @@ end end ) - (func $~lib/map/Map#__visit_impl (; 289 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#__visit_impl (; 288 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 i32.load @@ -19903,13 +19876,13 @@ local.get $1 call $~lib/rt/pure/__visit ) - (func $~lib/array/Array#__visit_impl (; 290 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#__visit_impl (; 289 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) nop ) - (func $~lib/array/Array#__visit_impl (; 291 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#__visit_impl (; 290 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) nop ) - (func $~lib/map/Map#__visit_impl (; 292 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#__visit_impl (; 291 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 i32.load @@ -19922,7 +19895,7 @@ local.get $1 call $~lib/rt/pure/__visit ) - (func $~lib/map/Map#__visit_impl (; 293 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#__visit_impl (; 292 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 i32.load @@ -19935,7 +19908,7 @@ local.get $1 call $~lib/rt/pure/__visit ) - (func $~lib/map/Map#__visit_impl (; 294 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#__visit_impl (; 293 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 i32.load @@ -19948,10 +19921,10 @@ local.get $1 call $~lib/rt/pure/__visit ) - (func $~lib/array/Array#__visit_impl (; 295 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#__visit_impl (; 294 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) nop ) - (func $~lib/map/Map#__visit_impl (; 296 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#__visit_impl (; 295 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 i32.load @@ -19964,7 +19937,7 @@ local.get $1 call $~lib/rt/pure/__visit ) - (func $~lib/map/Map#__visit_impl (; 297 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#__visit_impl (; 296 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 i32.load @@ -19977,10 +19950,10 @@ local.get $1 call $~lib/rt/pure/__visit ) - (func $~lib/array/Array#__visit_impl (; 298 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#__visit_impl (; 297 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) nop ) - (func $~lib/map/Map#__visit_impl (; 299 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#__visit_impl (; 298 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 i32.load @@ -19993,7 +19966,7 @@ local.get $1 call $~lib/rt/pure/__visit ) - (func $~lib/map/Map#__visit_impl (; 300 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#__visit_impl (; 299 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 i32.load @@ -20006,10 +19979,10 @@ local.get $1 call $~lib/rt/pure/__visit ) - (func $~lib/array/Array#__visit_impl (; 301 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#__visit_impl (; 300 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) nop ) - (func $~lib/map/Map#__visit_impl (; 302 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#__visit_impl (; 301 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 i32.load @@ -20022,7 +19995,7 @@ local.get $1 call $~lib/rt/pure/__visit ) - (func $~lib/map/Map#__visit_impl (; 303 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#__visit_impl (; 302 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 i32.load @@ -20035,10 +20008,10 @@ local.get $1 call $~lib/rt/pure/__visit ) - (func $~lib/array/Array#__visit_impl (; 304 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#__visit_impl (; 303 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) nop ) - (func $~lib/map/Map#__visit_impl (; 305 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#__visit_impl (; 304 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 i32.load @@ -20051,7 +20024,7 @@ local.get $1 call $~lib/rt/pure/__visit ) - (func $~lib/map/Map#__visit_impl (; 306 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#__visit_impl (; 305 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 i32.load @@ -20064,10 +20037,10 @@ local.get $1 call $~lib/rt/pure/__visit ) - (func $~lib/array/Array#__visit_impl (; 307 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#__visit_impl (; 306 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) nop ) - (func $~lib/map/Map#__visit_impl (; 308 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#__visit_impl (; 307 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 i32.load @@ -20080,7 +20053,7 @@ local.get $1 call $~lib/rt/pure/__visit ) - (func $~lib/map/Map#__visit_impl (; 309 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#__visit_impl (; 308 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 i32.load @@ -20093,10 +20066,10 @@ local.get $1 call $~lib/rt/pure/__visit ) - (func $~lib/array/Array#__visit_impl (; 310 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#__visit_impl (; 309 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) nop ) - (func $~lib/map/Map#__visit_impl (; 311 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#__visit_impl (; 310 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 i32.load @@ -20109,7 +20082,7 @@ local.get $1 call $~lib/rt/pure/__visit ) - (func $~lib/map/Map#__visit_impl (; 312 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#__visit_impl (; 311 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 i32.load @@ -20122,10 +20095,10 @@ local.get $1 call $~lib/rt/pure/__visit ) - (func $~lib/array/Array#__visit_impl (; 313 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#__visit_impl (; 312 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) nop ) - (func $~lib/map/Map#__visit_impl (; 314 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#__visit_impl (; 313 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 i32.load @@ -20138,7 +20111,7 @@ local.get $1 call $~lib/rt/pure/__visit ) - (func $~lib/map/Map#__visit_impl (; 315 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#__visit_impl (; 314 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 i32.load @@ -20151,10 +20124,10 @@ local.get $1 call $~lib/rt/pure/__visit ) - (func $~lib/array/Array#__visit_impl (; 316 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#__visit_impl (; 315 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) nop ) - (func $~lib/map/Map#__visit_impl (; 317 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#__visit_impl (; 316 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 i32.load @@ -20167,7 +20140,7 @@ local.get $1 call $~lib/rt/pure/__visit ) - (func $~lib/rt/__visit_members (; 318 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/__visit_members (; 317 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) block $block$4$break block $switch$1$default @@ -20369,7 +20342,7 @@ end return ) - (func $null (; 319 ;) (type $FUNCSIG$v) + (func $null (; 318 ;) (type $FUNCSIG$v) unreachable ) ) From 7f8f9452c779ddcf2e619400750f68de0d634e18 Mon Sep 17 00:00:00 2001 From: "Liao.Peng" Date: Fri, 13 Dec 2019 15:32:00 +0800 Subject: [PATCH 3/4] 1.Using length++ in map.keys array Signed-off-by: Liao.Peng --- std/assembly/map.ts | 6 +- tests/compiler/std/map.optimized.wat | 144 +++++++++++-------- tests/compiler/std/map.untouched.wat | 200 ++++++++++++++++----------- 3 files changed, 206 insertions(+), 144 deletions(-) diff --git a/std/assembly/map.ts b/std/assembly/map.ts index ec5df2257f..2444ad7b1f 100644 --- a/std/assembly/map.ts +++ b/std/assembly/map.ts @@ -210,8 +210,7 @@ export class Map { for (let i = 0; i < size; ++i) { let entry = changetype>(start + i * ENTRY_SIZE()); if (!(entry.taggedNext & EMPTY)) { - keys[length] = entry.key; - ++length; + keys[length++] = entry.key; } } keys.length = length; @@ -227,8 +226,7 @@ export class Map { for (let i = 0; i < size; ++i) { let entry = changetype>(start + i * ENTRY_SIZE()); if (!(entry.taggedNext & EMPTY)) { - values[length] = entry.value; - ++length; + values[length++] = entry.value; } } values.length = length; diff --git a/tests/compiler/std/map.optimized.wat b/tests/compiler/std/map.optimized.wat index f6a74d55b8..56adea0627 100644 --- a/tests/compiler/std/map.optimized.wat +++ b/tests/compiler/std/map.optimized.wat @@ -2737,6 +2737,7 @@ (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) local.get $0 i32.load offset=8 local.set $4 @@ -2774,15 +2775,16 @@ i32.and i32.eqz if - local.get $1 - local.get $0 - local.get $5 - i32.load8_s - call $~lib/array/Array#__set local.get $0 + local.tee $6 i32.const 1 i32.add local.set $0 + local.get $1 + local.get $6 + local.get $5 + i32.load8_s + call $~lib/array/Array#__set end local.get $3 i32.const 1 @@ -2869,6 +2871,7 @@ (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) local.get $0 i32.load offset=8 local.set $3 @@ -2896,15 +2899,16 @@ i32.and i32.eqz if - local.get $2 - local.get $0 - local.get $5 - i32.load offset=4 - call $~lib/array/Array#__set local.get $0 + local.tee $6 i32.const 1 i32.add local.set $0 + local.get $2 + local.get $6 + local.get $5 + i32.load offset=4 + call $~lib/array/Array#__set end local.get $1 i32.const 1 @@ -4422,6 +4426,7 @@ (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) local.get $0 i32.load offset=8 local.set $4 @@ -4459,15 +4464,16 @@ i32.and i32.eqz if - local.get $1 - local.get $0 - local.get $5 - i32.load8_u - call $~lib/array/Array#__set local.get $0 + local.tee $6 i32.const 1 i32.add local.set $0 + local.get $1 + local.get $6 + local.get $5 + i32.load8_u + call $~lib/array/Array#__set end local.get $3 i32.const 1 @@ -5660,6 +5666,7 @@ (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) local.get $0 i32.load offset=8 local.set $4 @@ -5697,15 +5704,16 @@ i32.and i32.eqz if - local.get $1 - local.get $0 - local.get $5 - i32.load16_s - call $~lib/array/Array#__set local.get $0 + local.tee $6 i32.const 1 i32.add local.set $0 + local.get $1 + local.get $6 + local.get $5 + i32.load16_s + call $~lib/array/Array#__set end local.get $3 i32.const 1 @@ -6847,6 +6855,7 @@ (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) local.get $0 i32.load offset=8 local.set $4 @@ -6884,15 +6893,16 @@ i32.and i32.eqz if - local.get $1 - local.get $0 - local.get $5 - i32.load16_u - call $~lib/array/Array#__set local.get $0 + local.tee $6 i32.const 1 i32.add local.set $0 + local.get $1 + local.get $6 + local.get $5 + i32.load16_u + call $~lib/array/Array#__set end local.get $3 i32.const 1 @@ -7715,6 +7725,7 @@ (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) local.get $0 i32.load offset=8 local.set $3 @@ -7742,15 +7753,16 @@ i32.and i32.eqz if - local.get $2 - local.get $0 - local.get $5 - i32.load - call $~lib/array/Array#__set local.get $0 + local.tee $6 i32.const 1 i32.add local.set $0 + local.get $2 + local.get $6 + local.get $5 + i32.load + call $~lib/array/Array#__set end local.get $1 i32.const 1 @@ -8284,6 +8296,7 @@ (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) local.get $0 i32.load offset=8 local.set $4 @@ -8321,15 +8334,16 @@ i32.and i32.eqz if - local.get $1 - local.get $0 - local.get $5 - i32.load - call $~lib/array/Array#__set local.get $0 + local.tee $6 i32.const 1 i32.add local.set $0 + local.get $1 + local.get $6 + local.get $5 + i32.load + call $~lib/array/Array#__set end local.get $3 i32.const 1 @@ -9274,6 +9288,7 @@ (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) local.get $0 i32.load offset=8 local.set $4 @@ -9311,15 +9326,16 @@ i32.and i32.eqz if - local.get $1 - local.get $0 - local.get $5 - i64.load - call $~lib/array/Array#__set local.get $0 + local.tee $6 i32.const 1 i32.add local.set $0 + local.get $1 + local.get $6 + local.get $5 + i64.load + call $~lib/array/Array#__set end local.get $3 i32.const 1 @@ -9339,6 +9355,7 @@ (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) local.get $0 i32.load offset=8 local.set $3 @@ -9366,15 +9383,16 @@ i32.and i32.eqz if - local.get $2 - local.get $0 - local.get $5 - i32.load offset=8 - call $~lib/array/Array#__set local.get $0 + local.tee $6 i32.const 1 i32.add local.set $0 + local.get $2 + local.get $6 + local.get $5 + i32.load offset=8 + call $~lib/array/Array#__set end local.get $1 i32.const 1 @@ -10262,6 +10280,7 @@ (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) local.get $0 i32.load offset=8 local.set $4 @@ -10299,15 +10318,16 @@ i32.and i32.eqz if - local.get $1 - local.get $0 - local.get $5 - i64.load - call $~lib/array/Array#__set local.get $0 + local.tee $6 i32.const 1 i32.add local.set $0 + local.get $1 + local.get $6 + local.get $5 + i64.load + call $~lib/array/Array#__set end local.get $3 i32.const 1 @@ -11151,6 +11171,7 @@ (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) local.get $0 i32.load offset=8 local.set $4 @@ -11188,15 +11209,16 @@ i32.and i32.eqz if - local.get $1 - local.get $0 - local.get $5 - f32.load - call $~lib/array/Array#__set local.get $0 + local.tee $6 i32.const 1 i32.add local.set $0 + local.get $1 + local.get $6 + local.get $5 + f32.load + call $~lib/array/Array#__set end local.get $3 i32.const 1 @@ -12346,6 +12368,7 @@ (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) local.get $0 i32.load offset=8 local.set $4 @@ -12383,15 +12406,16 @@ i32.and i32.eqz if - local.get $1 - local.get $0 - local.get $5 - f64.load - call $~lib/array/Array#__set local.get $0 + local.tee $6 i32.const 1 i32.add local.set $0 + local.get $1 + local.get $6 + local.get $5 + f64.load + call $~lib/array/Array#__set end local.get $3 i32.const 1 diff --git a/tests/compiler/std/map.untouched.wat b/tests/compiler/std/map.untouched.wat index ba6047e2a5..2ec5c366a9 100644 --- a/tests/compiler/std/map.untouched.wat +++ b/tests/compiler/std/map.untouched.wat @@ -4424,6 +4424,7 @@ (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) local.get $0 i32.load offset=8 local.set $1 @@ -4459,13 +4460,14 @@ if local.get $3 local.get $4 - local.get $6 - i32.load8_s - call $~lib/array/Array#__set - local.get $4 + local.tee $7 i32.const 1 i32.add local.set $4 + local.get $7 + local.get $6 + i32.load8_s + call $~lib/array/Array#__set end local.get $5 i32.const 1 @@ -4566,6 +4568,7 @@ (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) local.get $0 i32.load offset=8 local.set $1 @@ -4601,13 +4604,14 @@ if local.get $3 local.get $4 - local.get $6 - i32.load offset=4 - call $~lib/array/Array#__set - local.get $4 + local.tee $7 i32.const 1 i32.add local.set $4 + local.get $7 + local.get $6 + i32.load offset=4 + call $~lib/array/Array#__set end local.get $5 i32.const 1 @@ -6588,6 +6592,7 @@ (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) local.get $0 i32.load offset=8 local.set $1 @@ -6623,13 +6628,14 @@ if local.get $3 local.get $4 - local.get $6 - i32.load8_u - call $~lib/array/Array#__set - local.get $4 + local.tee $7 i32.const 1 i32.add local.set $4 + local.get $7 + local.get $6 + i32.load8_u + call $~lib/array/Array#__set end local.get $5 i32.const 1 @@ -6651,6 +6657,7 @@ (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) local.get $0 i32.load offset=8 local.set $1 @@ -6686,13 +6693,14 @@ if local.get $3 local.get $4 - local.get $6 - i32.load offset=4 - call $~lib/array/Array#__set - local.get $4 + local.tee $7 i32.const 1 i32.add local.set $4 + local.get $7 + local.get $6 + i32.load offset=4 + call $~lib/array/Array#__set end local.get $5 i32.const 1 @@ -8228,6 +8236,7 @@ (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) local.get $0 i32.load offset=8 local.set $1 @@ -8263,13 +8272,14 @@ if local.get $3 local.get $4 - local.get $6 - i32.load16_s - call $~lib/array/Array#__set - local.get $4 + local.tee $7 i32.const 1 i32.add local.set $4 + local.get $7 + local.get $6 + i32.load16_s + call $~lib/array/Array#__set end local.get $5 i32.const 1 @@ -8291,6 +8301,7 @@ (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) local.get $0 i32.load offset=8 local.set $1 @@ -8326,13 +8337,14 @@ if local.get $3 local.get $4 - local.get $6 - i32.load offset=4 - call $~lib/array/Array#__set - local.get $4 + local.tee $7 i32.const 1 i32.add local.set $4 + local.get $7 + local.get $6 + i32.load offset=4 + call $~lib/array/Array#__set end local.get $5 i32.const 1 @@ -9858,6 +9870,7 @@ (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) local.get $0 i32.load offset=8 local.set $1 @@ -9893,13 +9906,14 @@ if local.get $3 local.get $4 - local.get $6 - i32.load16_u - call $~lib/array/Array#__set - local.get $4 + local.tee $7 i32.const 1 i32.add local.set $4 + local.get $7 + local.get $6 + i32.load16_u + call $~lib/array/Array#__set end local.get $5 i32.const 1 @@ -9921,6 +9935,7 @@ (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) local.get $0 i32.load offset=8 local.set $1 @@ -9956,13 +9971,14 @@ if local.get $3 local.get $4 - local.get $6 - i32.load offset=4 - call $~lib/array/Array#__set - local.get $4 + local.tee $7 i32.const 1 i32.add local.set $4 + local.get $7 + local.get $6 + i32.load offset=4 + call $~lib/array/Array#__set end local.get $5 i32.const 1 @@ -10997,6 +11013,7 @@ (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) local.get $0 i32.load offset=8 local.set $1 @@ -11032,13 +11049,14 @@ if local.get $3 local.get $4 - local.get $6 - i32.load - call $~lib/array/Array#__set - local.get $4 + local.tee $7 i32.const 1 i32.add local.set $4 + local.get $7 + local.get $6 + i32.load + call $~lib/array/Array#__set end local.get $5 i32.const 1 @@ -11060,6 +11078,7 @@ (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) local.get $0 i32.load offset=8 local.set $1 @@ -11095,13 +11114,14 @@ if local.get $3 local.get $4 - local.get $6 - i32.load offset=4 - call $~lib/array/Array#__set - local.get $4 + local.tee $7 i32.const 1 i32.add local.set $4 + local.get $7 + local.get $6 + i32.load offset=4 + call $~lib/array/Array#__set end local.get $5 i32.const 1 @@ -12166,6 +12186,7 @@ (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) local.get $0 i32.load offset=8 local.set $1 @@ -12201,13 +12222,14 @@ if local.get $3 local.get $4 - local.get $6 - i32.load - call $~lib/array/Array#__set - local.get $4 + local.tee $7 i32.const 1 i32.add local.set $4 + local.get $7 + local.get $6 + i32.load + call $~lib/array/Array#__set end local.get $5 i32.const 1 @@ -12229,6 +12251,7 @@ (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) local.get $0 i32.load offset=8 local.set $1 @@ -12264,13 +12287,14 @@ if local.get $3 local.get $4 - local.get $6 - i32.load offset=4 - call $~lib/array/Array#__set - local.get $4 + local.tee $7 i32.const 1 i32.add local.set $4 + local.get $7 + local.get $6 + i32.load offset=4 + call $~lib/array/Array#__set end local.get $5 i32.const 1 @@ -13838,6 +13862,7 @@ (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) local.get $0 i32.load offset=8 local.set $1 @@ -13873,13 +13898,14 @@ if local.get $3 local.get $4 - local.get $6 - i64.load - call $~lib/array/Array#__set - local.get $4 + local.tee $7 i32.const 1 i32.add local.set $4 + local.get $7 + local.get $6 + i64.load + call $~lib/array/Array#__set end local.get $5 i32.const 1 @@ -13901,6 +13927,7 @@ (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) local.get $0 i32.load offset=8 local.set $1 @@ -13936,13 +13963,14 @@ if local.get $3 local.get $4 - local.get $6 - i32.load offset=8 - call $~lib/array/Array#__set - local.get $4 + local.tee $7 i32.const 1 i32.add local.set $4 + local.get $7 + local.get $6 + i32.load offset=8 + call $~lib/array/Array#__set end local.get $5 i32.const 1 @@ -15433,6 +15461,7 @@ (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) local.get $0 i32.load offset=8 local.set $1 @@ -15468,13 +15497,14 @@ if local.get $3 local.get $4 - local.get $6 - i64.load - call $~lib/array/Array#__set - local.get $4 + local.tee $7 i32.const 1 i32.add local.set $4 + local.get $7 + local.get $6 + i64.load + call $~lib/array/Array#__set end local.get $5 i32.const 1 @@ -15496,6 +15526,7 @@ (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) local.get $0 i32.load offset=8 local.set $1 @@ -15531,13 +15562,14 @@ if local.get $3 local.get $4 - local.get $6 - i32.load offset=8 - call $~lib/array/Array#__set - local.get $4 + local.tee $7 i32.const 1 i32.add local.set $4 + local.get $7 + local.get $6 + i32.load offset=8 + call $~lib/array/Array#__set end local.get $5 i32.const 1 @@ -17032,6 +17064,7 @@ (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) local.get $0 i32.load offset=8 local.set $1 @@ -17067,13 +17100,14 @@ if local.get $3 local.get $4 - local.get $6 - f32.load - call $~lib/array/Array#__set - local.get $4 + local.tee $7 i32.const 1 i32.add local.set $4 + local.get $7 + local.get $6 + f32.load + call $~lib/array/Array#__set end local.get $5 i32.const 1 @@ -17095,6 +17129,7 @@ (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) local.get $0 i32.load offset=8 local.set $1 @@ -17130,13 +17165,14 @@ if local.get $3 local.get $4 - local.get $6 - i32.load offset=4 - call $~lib/array/Array#__set - local.get $4 + local.tee $7 i32.const 1 i32.add local.set $4 + local.get $7 + local.get $6 + i32.load offset=4 + call $~lib/array/Array#__set end local.get $5 i32.const 1 @@ -18634,6 +18670,7 @@ (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) local.get $0 i32.load offset=8 local.set $1 @@ -18669,13 +18706,14 @@ if local.get $3 local.get $4 - local.get $6 - f64.load - call $~lib/array/Array#__set - local.get $4 + local.tee $7 i32.const 1 i32.add local.set $4 + local.get $7 + local.get $6 + f64.load + call $~lib/array/Array#__set end local.get $5 i32.const 1 @@ -18697,6 +18735,7 @@ (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) local.get $0 i32.load offset=8 local.set $1 @@ -18732,13 +18771,14 @@ if local.get $3 local.get $4 - local.get $6 - i32.load offset=8 - call $~lib/array/Array#__set - local.get $4 + local.tee $7 i32.const 1 i32.add local.set $4 + local.get $7 + local.get $6 + i32.load offset=8 + call $~lib/array/Array#__set end local.get $5 i32.const 1 From bec75c1e9883fabd9d657ccfcc56acd621a6994e Mon Sep 17 00:00:00 2001 From: "Liao.Peng" Date: Mon, 16 Dec 2019 10:52:00 +0800 Subject: [PATCH 4/4] 1. Fix the bug of set.values() Signed-off-by: Liao.Peng --- std/assembly/set.ts | 4 +- tests/compiler/std/set.optimized.wat | 2385 +++++++++++++++-- tests/compiler/std/set.ts | 9 + tests/compiler/std/set.untouched.wat | 3617 ++++++++++++++++++++++---- 4 files changed, 5292 insertions(+), 723 deletions(-) diff --git a/std/assembly/set.ts b/std/assembly/set.ts index d0d2f2a90d..e5d7157af9 100644 --- a/std/assembly/set.ts +++ b/std/assembly/set.ts @@ -187,11 +187,9 @@ export class Set { for (let i = 0; i < size; ++i) { let entry = changetype>(start + i * ENTRY_SIZE()); if (!(entry.taggedNext & EMPTY)) { - values.push(entry.key); - ++length; + values[length++] = entry.key; } } - values.length = length; return values; } diff --git a/tests/compiler/std/set.optimized.wat b/tests/compiler/std/set.optimized.wat index 219f454d0a..92ba31d852 100644 --- a/tests/compiler/std/set.optimized.wat +++ b/tests/compiler/std/set.optimized.wat @@ -11,12 +11,18 @@ (type $FUNCSIG$ij (func (param i64) (result i32))) (type $FUNCSIG$iiji (func (param i32 i64 i32) (result i32))) (type $FUNCSIG$vij (func (param i32 i64))) + (type $FUNCSIG$viij (func (param i32 i32 i64))) + (type $FUNCSIG$jii (func (param i32 i32) (result i64))) (type $FUNCSIG$iif (func (param i32 f32) (result i32))) (type $FUNCSIG$iifi (func (param i32 f32 i32) (result i32))) (type $FUNCSIG$vif (func (param i32 f32))) + (type $FUNCSIG$viif (func (param i32 i32 f32))) + (type $FUNCSIG$fii (func (param i32 i32) (result f32))) (type $FUNCSIG$iid (func (param i32 f64) (result i32))) (type $FUNCSIG$iidi (func (param i32 f64 i32) (result i32))) (type $FUNCSIG$vid (func (param i32 f64))) + (type $FUNCSIG$viid (func (param i32 i32 f64))) + (type $FUNCSIG$dii (func (param i32 i32) (result f64))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (import "rtrace" "onfree" (func $~lib/rt/rtrace/onfree (param i32))) (import "rtrace" "onalloc" (func $~lib/rt/rtrace/onalloc (param i32))) @@ -31,7 +37,8 @@ (data (i32.const 264) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") (data (i32.const 320) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") (data (i32.const 360) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00s\00t\00d\00/\00s\00e\00t\00.\00t\00s") - (data (i32.const 400) "\0d\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\004\04\00\00\00\00\00\004\00\00\00\00\00\00\00T\04\00\00\00\00\00\00T\00\00\00\00\00\00\00\94\04\00\00\00\00\00\00\94\00\00\00\00\00\00\00\14\05\00\00\00\00\00\00\14\01\00\00\00\00\00\00\94\0c\00\00\00\00\00\00\14\0d") + (data (i32.const 400) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") + (data (i32.const 448) "\17\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\004\04\00\00\00\00\00\003\04\00\00\02\00\00\004\00\00\00\00\00\00\003\00\00\00\02\00\00\00T\04\00\00\00\00\00\00S\04\00\00\02\00\00\00T\00\00\00\00\00\00\00S\00\00\00\02\00\00\00\94\04\00\00\00\00\00\00\93\04\00\00\02\00\00\00\94\00\00\00\00\00\00\00\93\00\00\00\02\00\00\00\14\05\00\00\00\00\00\00\13\05\00\00\02\00\00\00\14\01\00\00\00\00\00\00\13\01\00\00\02\00\00\00\94\0c\00\00\00\00\00\00\93\0c\00\00\02\00\00\00\14\0d\00\00\00\00\00\00\13\0d\00\00\02") (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) (global $~lib/rt/pure/ROOTS (mut i32) (i32.const 0)) @@ -624,10 +631,10 @@ if unreachable end - i32.const 512 + i32.const 640 i32.const 0 i32.store - i32.const 2080 + i32.const 2208 i32.const 0 i32.store i32.const 0 @@ -641,7 +648,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 512 + i32.const 640 i32.add i32.const 0 i32.store offset=4 @@ -660,7 +667,7 @@ i32.add i32.const 2 i32.shl - i32.const 512 + i32.const 640 i32.add i32.const 0 i32.store offset=96 @@ -678,13 +685,13 @@ br $loop|0 end end - i32.const 512 - i32.const 2096 + i32.const 640 + i32.const 2224 memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - i32.const 512 + i32.const 640 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/tlsf/prepareSize (; 9 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) @@ -1376,7 +1383,7 @@ ) (func $~lib/rt/pure/__retain (; 22 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - i32.const 508 + i32.const 636 i32.gt_u if local.get $0 @@ -1619,7 +1626,7 @@ ) (func $~lib/rt/__typeinfo (; 25 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - i32.const 400 + i32.const 448 i32.load i32.gt_u if @@ -1633,7 +1640,7 @@ local.get $0 i32.const 3 i32.shl - i32.const 404 + i32.const 452 i32.add i32.load ) @@ -2005,7 +2012,7 @@ ) (func $~lib/rt/pure/__release (; 31 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 - i32.const 508 + i32.const 636 i32.gt_u if local.get $0 @@ -2355,7 +2362,408 @@ i32.store end ) - (func $~lib/set/Set#delete (; 39 ;) (param $0 i32) (param $1 i32) + (func $~lib/arraybuffer/ArrayBufferView#constructor (; 39 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + local.get $1 + i32.const 1073741808 + local.get $2 + i32.shr_u + i32.gt_u + if + i32.const 176 + i32.const 224 + i32.const 23 + i32.const 56 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.shl + local.tee $3 + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.tee $2 + local.get $3 + call $~lib/memory/memory.fill + local.get $0 + i32.eqz + if + i32.const 12 + i32.const 2 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.set $0 + end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $2 + local.set $1 + local.get $0 + i32.load + local.tee $4 + local.get $2 + i32.ne + if + local.get $1 + call $~lib/rt/pure/__retain + local.set $1 + local.get $4 + call $~lib/rt/pure/__release + end + local.get $0 + local.get $1 + i32.store + local.get $0 + local.get $2 + i32.store offset=4 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $0 + ) + (func $~lib/rt/tlsf/reallocateBlock (; 40 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $2 + call $~lib/rt/tlsf/prepareSize + local.set $3 + local.get $1 + i32.load + local.tee $4 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $1 + i32.load offset=4 + i32.const -268435456 + i32.and + i32.eqz + end + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 521 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $4 + i32.const -4 + i32.and + i32.le_u + if + local.get $0 + local.get $1 + local.get $3 + call $~lib/rt/tlsf/prepareBlock + local.get $1 + local.get $2 + i32.store offset=12 + local.get $1 + return + end + local.get $1 + i32.const 16 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $6 + i32.load + local.tee $5 + i32.const 1 + i32.and + if + local.get $4 + i32.const -4 + i32.and + i32.const 16 + i32.add + local.get $5 + i32.const -4 + i32.and + i32.add + local.tee $5 + local.get $3 + i32.ge_u + if + local.get $0 + local.get $6 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $4 + i32.const 3 + i32.and + local.get $5 + i32.or + i32.store + local.get $1 + local.get $2 + i32.store offset=12 + local.get $0 + local.get $1 + local.get $3 + call $~lib/rt/tlsf/prepareBlock + local.get $1 + return + end + end + local.get $0 + local.get $2 + call $~lib/rt/tlsf/allocateBlock + local.tee $3 + local.get $1 + i32.load offset=8 + i32.store offset=8 + local.get $3 + i32.const 16 + i32.add + local.get $1 + i32.const 16 + i32.add + local.get $2 + call $~lib/memory/memory.copy + local.get $1 + local.get $4 + i32.const 1 + i32.or + i32.store + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + local.get $1 + call $~lib/rt/rtrace/onfree + local.get $3 + ) + (func $~lib/rt/tlsf/__realloc (; 41 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 585 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 15 + i32.and + i32.eqz + i32.const 0 + local.get $0 + select + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 586 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 16 + i32.sub + local.get $1 + call $~lib/rt/tlsf/reallocateBlock + i32.const 16 + i32.add + ) + (func $~lib/array/ensureSize (; 42 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + local.get $0 + i32.load offset=8 + local.tee $3 + local.get $2 + i32.shr_u + i32.gt_u + if + local.get $1 + i32.const 1073741808 + local.get $2 + i32.shr_u + i32.gt_u + if + i32.const 176 + i32.const 416 + i32.const 14 + i32.const 47 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load + local.tee $4 + local.get $1 + local.get $2 + i32.shl + local.tee $2 + call $~lib/rt/tlsf/__realloc + local.tee $1 + local.get $3 + i32.add + local.get $2 + local.get $3 + i32.sub + call $~lib/memory/memory.fill + local.get $1 + local.get $4 + i32.ne + if + local.get $0 + local.get $1 + call $~lib/rt/pure/__retain + i32.store + local.get $0 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $2 + i32.store offset=8 + end + ) + (func $~lib/array/Array#__set (; 43 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + local.get $1 + i32.const 0 + i32.lt_s + if + i32.const 280 + i32.const 416 + i32.const 109 + i32.const 21 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $3 + i32.const 0 + call $~lib/array/ensureSize + local.get $0 + local.get $3 + i32.store offset=12 + end + local.get $0 + i32.load offset=4 + local.get $1 + i32.add + local.get $2 + i32.store8 + ) + (func $~lib/set/Set#values (; 44 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.load offset=8 + local.set $4 + local.get $0 + i32.load offset=16 + local.set $1 + i32.const 16 + i32.const 4 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.get $1 + i32.const 0 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $2 + i32.const 0 + i32.store offset=12 + local.get $2 + local.get $1 + i32.store offset=12 + i32.const 0 + local.set $0 + loop $loop|0 + local.get $3 + local.get $1 + i32.lt_s + if + local.get $3 + i32.const 3 + i32.shl + local.get $4 + i32.add + local.tee $5 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz + if + local.get $0 + local.tee $6 + i32.const 1 + i32.add + local.set $0 + local.get $2 + local.get $6 + local.get $5 + i32.load8_s + call $~lib/array/Array#__set + end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $loop|0 + end + end + local.get $2 + ) + (func $~lib/array/Array#__get (; 45 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 280 + i32.const 416 + i32.const 93 + i32.const 41 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + local.get $1 + i32.add + i32.load8_s + ) + (func $~lib/set/Set#delete (; 46 ;) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 local.get $1 @@ -2418,9 +2826,11 @@ call $~lib/set/Set#rehash end ) - (func $std/set/testNumeric (; 40 ;) (type $FUNCSIG$v) + (func $std/set/testNumeric (; 47 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) + (local $2 i32) + (local $3 i32) call $~lib/set/Set#constructor local.set $1 loop $loop|0 @@ -2528,9 +2938,62 @@ call $~lib/builtins/abort unreachable end + local.get $1 + call $~lib/set/Set#values + local.set $2 + call $~lib/set/Set#constructor + local.set $3 i32.const 0 local.set $0 loop $loop|2 + local.get $0 + local.get $2 + i32.load offset=12 + i32.lt_s + if + local.get $1 + local.get $2 + local.get $0 + call $~lib/array/Array#__get + call $~lib/set/Set#has + if + local.get $3 + local.get $2 + local.get $0 + call $~lib/array/Array#__get + call $~lib/set/Set#add + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $loop|2 + else + i32.const 0 + i32.const 376 + i32.const 24 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + unreachable + end + end + local.get $3 + i32.load offset=20 + local.get $1 + i32.load offset=20 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 27 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $loop|3 local.get $0 i32.const 50 i32.lt_s @@ -2542,7 +3005,7 @@ if i32.const 0 i32.const 376 - i32.const 22 + i32.const 31 i32.const 4 call $~lib/builtins/abort unreachable @@ -2556,7 +3019,7 @@ if i32.const 0 i32.const 376 - i32.const 24 + i32.const 33 i32.const 4 call $~lib/builtins/abort unreachable @@ -2565,7 +3028,7 @@ i32.const 1 i32.add local.set $0 - br $loop|2 + br $loop|3 end unreachable end @@ -2577,14 +3040,14 @@ if i32.const 0 i32.const 376 - i32.const 26 + i32.const 35 i32.const 2 call $~lib/builtins/abort unreachable end i32.const 0 local.set $0 - loop $loop|3 + loop $loop|4 local.get $0 i32.const 50 i32.lt_s @@ -2595,7 +3058,7 @@ if i32.const 0 i32.const 376 - i32.const 30 + i32.const 39 i32.const 4 call $~lib/builtins/abort unreachable @@ -2610,7 +3073,7 @@ if i32.const 0 i32.const 376 - i32.const 32 + i32.const 41 i32.const 4 call $~lib/builtins/abort unreachable @@ -2624,7 +3087,7 @@ if i32.const 0 i32.const 376 - i32.const 34 + i32.const 43 i32.const 4 call $~lib/builtins/abort unreachable @@ -2633,7 +3096,7 @@ i32.const 1 i32.add local.set $0 - br $loop|3 + br $loop|4 end unreachable end @@ -2645,7 +3108,7 @@ if i32.const 0 i32.const 376 - i32.const 36 + i32.const 45 i32.const 2 call $~lib/builtins/abort unreachable @@ -2657,18 +3120,22 @@ if i32.const 0 i32.const 376 - i32.const 40 + i32.const 49 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $2 + call $~lib/rt/pure/__release + local.get $3 + call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release ) - (func $~lib/set/Set#constructor (; 41 ;) (result i32) + (func $~lib/set/Set#constructor (; 48 ;) (result i32) (local $0 i32) i32.const 24 - i32.const 4 + i32.const 5 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain local.tee $0 @@ -2693,7 +3160,7 @@ call $~lib/set/Set#clear local.get $0 ) - (func $~lib/set/Set#has (; 42 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/set/Set#has (; 49 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 local.get $1 @@ -2704,7 +3171,7 @@ i32.const 0 i32.ne ) - (func $~lib/set/Set#rehash (; 43 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#rehash (; 50 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -2832,7 +3299,7 @@ local.get $4 call $~lib/rt/pure/__release ) - (func $~lib/set/Set#add (; 44 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#add (; 51 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -2917,7 +3384,90 @@ i32.store end ) - (func $~lib/set/Set#delete (; 45 ;) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#values (; 52 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.load offset=8 + local.set $4 + local.get $0 + i32.load offset=16 + local.set $1 + i32.const 16 + i32.const 6 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.get $1 + i32.const 0 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $2 + i32.const 0 + i32.store offset=12 + local.get $2 + local.get $1 + i32.store offset=12 + i32.const 0 + local.set $0 + loop $loop|0 + local.get $3 + local.get $1 + i32.lt_s + if + local.get $3 + i32.const 3 + i32.shl + local.get $4 + i32.add + local.tee $5 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz + if + local.get $0 + local.tee $6 + i32.const 1 + i32.add + local.set $0 + local.get $2 + local.get $6 + local.get $5 + i32.load8_u + call $~lib/array/Array#__set + end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $loop|0 + end + end + local.get $2 + ) + (func $~lib/array/Array#__get (; 53 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 280 + i32.const 416 + i32.const 93 + i32.const 41 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + local.get $1 + i32.add + i32.load8_u + ) + (func $~lib/set/Set#delete (; 54 ;) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 local.get $1 @@ -2978,9 +3528,11 @@ call $~lib/set/Set#rehash end ) - (func $std/set/testNumeric (; 46 ;) (type $FUNCSIG$v) + (func $std/set/testNumeric (; 55 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) + (local $2 i32) + (local $3 i32) call $~lib/set/Set#constructor local.set $1 loop $loop|0 @@ -3038,37 +3590,89 @@ local.set $0 loop $loop|1 local.get $0 - i32.const 100 - i32.lt_u + i32.const 100 + i32.lt_u + if + local.get $1 + local.get $0 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 14 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/set/Set#add + local.get $1 + local.get $0 + call $~lib/set/Set#has + if + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $loop|1 + else + i32.const 0 + i32.const 376 + i32.const 16 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + unreachable + end + end + local.get $1 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 18 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/set/Set#values + local.set $2 + call $~lib/set/Set#constructor + local.set $3 + i32.const 0 + local.set $0 + loop $loop|2 + local.get $0 + local.get $2 + i32.load offset=12 + i32.lt_s if local.get $1 + local.get $2 local.get $0 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 14 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/set/Set#add - local.get $1 - local.get $0 + call $~lib/array/Array#__get call $~lib/set/Set#has if + local.get $3 + local.get $2 + local.get $0 + call $~lib/array/Array#__get + call $~lib/set/Set#add local.get $0 i32.const 1 i32.add local.set $0 - br $loop|1 + br $loop|2 else i32.const 0 i32.const 376 - i32.const 16 + i32.const 24 i32.const 4 call $~lib/builtins/abort unreachable @@ -3076,21 +3680,22 @@ unreachable end end + local.get $3 + i32.load offset=20 local.get $1 i32.load offset=20 - i32.const 100 i32.ne if i32.const 0 i32.const 376 - i32.const 18 + i32.const 27 i32.const 2 call $~lib/builtins/abort unreachable end i32.const 0 local.set $0 - loop $loop|2 + loop $loop|3 local.get $0 i32.const 50 i32.lt_u @@ -3102,7 +3707,7 @@ if i32.const 0 i32.const 376 - i32.const 22 + i32.const 31 i32.const 4 call $~lib/builtins/abort unreachable @@ -3116,7 +3721,7 @@ if i32.const 0 i32.const 376 - i32.const 24 + i32.const 33 i32.const 4 call $~lib/builtins/abort unreachable @@ -3125,7 +3730,7 @@ i32.const 1 i32.add local.set $0 - br $loop|2 + br $loop|3 end unreachable end @@ -3137,14 +3742,14 @@ if i32.const 0 i32.const 376 - i32.const 26 + i32.const 35 i32.const 2 call $~lib/builtins/abort unreachable end i32.const 0 local.set $0 - loop $loop|3 + loop $loop|4 local.get $0 i32.const 50 i32.lt_u @@ -3155,7 +3760,7 @@ if i32.const 0 i32.const 376 - i32.const 30 + i32.const 39 i32.const 4 call $~lib/builtins/abort unreachable @@ -3170,7 +3775,7 @@ if i32.const 0 i32.const 376 - i32.const 32 + i32.const 41 i32.const 4 call $~lib/builtins/abort unreachable @@ -3184,7 +3789,7 @@ if i32.const 0 i32.const 376 - i32.const 34 + i32.const 43 i32.const 4 call $~lib/builtins/abort unreachable @@ -3193,7 +3798,7 @@ i32.const 1 i32.add local.set $0 - br $loop|3 + br $loop|4 end unreachable end @@ -3205,7 +3810,7 @@ if i32.const 0 i32.const 376 - i32.const 36 + i32.const 45 i32.const 2 call $~lib/builtins/abort unreachable @@ -3217,18 +3822,22 @@ if i32.const 0 i32.const 376 - i32.const 40 + i32.const 49 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $2 + call $~lib/rt/pure/__release + local.get $3 + call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release ) - (func $~lib/set/Set#constructor (; 47 ;) (result i32) + (func $~lib/set/Set#constructor (; 56 ;) (result i32) (local $0 i32) i32.const 24 - i32.const 5 + i32.const 7 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain local.tee $0 @@ -3253,7 +3862,7 @@ call $~lib/set/Set#clear local.get $0 ) - (func $~lib/util/hash/hash16 (; 48 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/hash/hash16 (; 57 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 255 i32.and @@ -3268,7 +3877,7 @@ i32.const 16777619 i32.mul ) - (func $~lib/set/Set#find (; 49 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/set/Set#find (; 58 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.load local.get $0 @@ -3313,7 +3922,7 @@ end i32.const 0 ) - (func $~lib/set/Set#has (; 50 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/set/Set#has (; 59 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 local.get $1 @@ -3326,7 +3935,7 @@ i32.const 0 i32.ne ) - (func $~lib/set/Set#rehash (; 51 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#rehash (; 60 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3454,7 +4063,7 @@ local.get $4 call $~lib/rt/pure/__release ) - (func $~lib/set/Set#add (; 52 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#add (; 61 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3541,7 +4150,130 @@ i32.store end ) - (func $~lib/set/Set#delete (; 53 ;) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#__set (; 62 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + local.get $1 + i32.const 0 + i32.lt_s + if + i32.const 280 + i32.const 416 + i32.const 109 + i32.const 21 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $3 + i32.const 1 + call $~lib/array/ensureSize + local.get $0 + local.get $3 + i32.store offset=12 + end + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.get $2 + i32.store16 + ) + (func $~lib/set/Set#values (; 63 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.load offset=8 + local.set $4 + local.get $0 + i32.load offset=16 + local.set $1 + i32.const 16 + i32.const 8 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.get $1 + i32.const 1 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $2 + i32.const 0 + i32.store offset=12 + local.get $2 + local.get $1 + i32.store offset=12 + i32.const 0 + local.set $0 + loop $loop|0 + local.get $3 + local.get $1 + i32.lt_s + if + local.get $3 + i32.const 3 + i32.shl + local.get $4 + i32.add + local.tee $5 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz + if + local.get $0 + local.tee $6 + i32.const 1 + i32.add + local.set $0 + local.get $2 + local.get $6 + local.get $5 + i32.load16_s + call $~lib/array/Array#__set + end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $loop|0 + end + end + local.get $2 + ) + (func $~lib/array/Array#__get (; 64 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 280 + i32.const 416 + i32.const 93 + i32.const 41 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.load16_s + ) + (func $~lib/set/Set#delete (; 65 ;) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 local.get $1 @@ -3604,9 +4336,11 @@ call $~lib/set/Set#rehash end ) - (func $std/set/testNumeric (; 54 ;) (type $FUNCSIG$v) + (func $std/set/testNumeric (; 66 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) + (local $2 i32) + (local $3 i32) call $~lib/set/Set#constructor local.set $1 loop $loop|0 @@ -3714,9 +4448,62 @@ call $~lib/builtins/abort unreachable end + local.get $1 + call $~lib/set/Set#values + local.set $2 + call $~lib/set/Set#constructor + local.set $3 i32.const 0 local.set $0 loop $loop|2 + local.get $0 + local.get $2 + i32.load offset=12 + i32.lt_s + if + local.get $1 + local.get $2 + local.get $0 + call $~lib/array/Array#__get + call $~lib/set/Set#has + if + local.get $3 + local.get $2 + local.get $0 + call $~lib/array/Array#__get + call $~lib/set/Set#add + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $loop|2 + else + i32.const 0 + i32.const 376 + i32.const 24 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + unreachable + end + end + local.get $3 + i32.load offset=20 + local.get $1 + i32.load offset=20 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 27 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $loop|3 local.get $0 i32.const 50 i32.lt_s @@ -3728,7 +4515,7 @@ if i32.const 0 i32.const 376 - i32.const 22 + i32.const 31 i32.const 4 call $~lib/builtins/abort unreachable @@ -3742,7 +4529,7 @@ if i32.const 0 i32.const 376 - i32.const 24 + i32.const 33 i32.const 4 call $~lib/builtins/abort unreachable @@ -3751,7 +4538,7 @@ i32.const 1 i32.add local.set $0 - br $loop|2 + br $loop|3 end unreachable end @@ -3763,14 +4550,14 @@ if i32.const 0 i32.const 376 - i32.const 26 + i32.const 35 i32.const 2 call $~lib/builtins/abort unreachable end i32.const 0 local.set $0 - loop $loop|3 + loop $loop|4 local.get $0 i32.const 50 i32.lt_s @@ -3781,7 +4568,7 @@ if i32.const 0 i32.const 376 - i32.const 30 + i32.const 39 i32.const 4 call $~lib/builtins/abort unreachable @@ -3796,7 +4583,7 @@ if i32.const 0 i32.const 376 - i32.const 32 + i32.const 41 i32.const 4 call $~lib/builtins/abort unreachable @@ -3810,7 +4597,7 @@ if i32.const 0 i32.const 376 - i32.const 34 + i32.const 43 i32.const 4 call $~lib/builtins/abort unreachable @@ -3819,7 +4606,7 @@ i32.const 1 i32.add local.set $0 - br $loop|3 + br $loop|4 end unreachable end @@ -3831,7 +4618,7 @@ if i32.const 0 i32.const 376 - i32.const 36 + i32.const 45 i32.const 2 call $~lib/builtins/abort unreachable @@ -3843,18 +4630,22 @@ if i32.const 0 i32.const 376 - i32.const 40 + i32.const 49 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $2 + call $~lib/rt/pure/__release + local.get $3 + call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release ) - (func $~lib/set/Set#constructor (; 55 ;) (result i32) + (func $~lib/set/Set#constructor (; 67 ;) (result i32) (local $0 i32) i32.const 24 - i32.const 6 + i32.const 9 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain local.tee $0 @@ -3879,7 +4670,7 @@ call $~lib/set/Set#clear local.get $0 ) - (func $~lib/set/Set#has (; 56 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/set/Set#has (; 68 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 local.get $1 @@ -3890,7 +4681,7 @@ i32.const 0 i32.ne ) - (func $~lib/set/Set#rehash (; 57 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#rehash (; 69 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -4018,7 +4809,7 @@ local.get $4 call $~lib/rt/pure/__release ) - (func $~lib/set/Set#add (; 58 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#add (; 70 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -4103,7 +4894,92 @@ i32.store end ) - (func $~lib/set/Set#delete (; 59 ;) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#values (; 71 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.load offset=8 + local.set $4 + local.get $0 + i32.load offset=16 + local.set $1 + i32.const 16 + i32.const 10 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.get $1 + i32.const 1 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $2 + i32.const 0 + i32.store offset=12 + local.get $2 + local.get $1 + i32.store offset=12 + i32.const 0 + local.set $0 + loop $loop|0 + local.get $3 + local.get $1 + i32.lt_s + if + local.get $3 + i32.const 3 + i32.shl + local.get $4 + i32.add + local.tee $5 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz + if + local.get $0 + local.tee $6 + i32.const 1 + i32.add + local.set $0 + local.get $2 + local.get $6 + local.get $5 + i32.load16_u + call $~lib/array/Array#__set + end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $loop|0 + end + end + local.get $2 + ) + (func $~lib/array/Array#__get (; 72 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 280 + i32.const 416 + i32.const 93 + i32.const 41 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.load16_u + ) + (func $~lib/set/Set#delete (; 73 ;) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 local.get $1 @@ -4164,9 +5040,11 @@ call $~lib/set/Set#rehash end ) - (func $std/set/testNumeric (; 60 ;) (type $FUNCSIG$v) + (func $std/set/testNumeric (; 74 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) + (local $2 i32) + (local $3 i32) call $~lib/set/Set#constructor local.set $1 loop $loop|0 @@ -4274,9 +5152,62 @@ call $~lib/builtins/abort unreachable end + local.get $1 + call $~lib/set/Set#values + local.set $2 + call $~lib/set/Set#constructor + local.set $3 i32.const 0 local.set $0 loop $loop|2 + local.get $0 + local.get $2 + i32.load offset=12 + i32.lt_s + if + local.get $1 + local.get $2 + local.get $0 + call $~lib/array/Array#__get + call $~lib/set/Set#has + if + local.get $3 + local.get $2 + local.get $0 + call $~lib/array/Array#__get + call $~lib/set/Set#add + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $loop|2 + else + i32.const 0 + i32.const 376 + i32.const 24 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + unreachable + end + end + local.get $3 + i32.load offset=20 + local.get $1 + i32.load offset=20 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 27 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $loop|3 local.get $0 i32.const 50 i32.lt_u @@ -4288,7 +5219,7 @@ if i32.const 0 i32.const 376 - i32.const 22 + i32.const 31 i32.const 4 call $~lib/builtins/abort unreachable @@ -4302,7 +5233,7 @@ if i32.const 0 i32.const 376 - i32.const 24 + i32.const 33 i32.const 4 call $~lib/builtins/abort unreachable @@ -4311,7 +5242,7 @@ i32.const 1 i32.add local.set $0 - br $loop|2 + br $loop|3 end unreachable end @@ -4323,14 +5254,14 @@ if i32.const 0 i32.const 376 - i32.const 26 + i32.const 35 i32.const 2 call $~lib/builtins/abort unreachable end i32.const 0 local.set $0 - loop $loop|3 + loop $loop|4 local.get $0 i32.const 50 i32.lt_u @@ -4341,7 +5272,7 @@ if i32.const 0 i32.const 376 - i32.const 30 + i32.const 39 i32.const 4 call $~lib/builtins/abort unreachable @@ -4356,7 +5287,7 @@ if i32.const 0 i32.const 376 - i32.const 32 + i32.const 41 i32.const 4 call $~lib/builtins/abort unreachable @@ -4370,7 +5301,7 @@ if i32.const 0 i32.const 376 - i32.const 34 + i32.const 43 i32.const 4 call $~lib/builtins/abort unreachable @@ -4379,7 +5310,7 @@ i32.const 1 i32.add local.set $0 - br $loop|3 + br $loop|4 end unreachable end @@ -4391,7 +5322,7 @@ if i32.const 0 i32.const 376 - i32.const 36 + i32.const 45 i32.const 2 call $~lib/builtins/abort unreachable @@ -4403,18 +5334,22 @@ if i32.const 0 i32.const 376 - i32.const 40 + i32.const 49 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $2 + call $~lib/rt/pure/__release + local.get $3 + call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release ) - (func $~lib/set/Set#constructor (; 61 ;) (result i32) + (func $~lib/set/Set#constructor (; 75 ;) (result i32) (local $0 i32) i32.const 24 - i32.const 7 + i32.const 11 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain local.tee $0 @@ -4439,7 +5374,7 @@ call $~lib/set/Set#clear local.get $0 ) - (func $~lib/util/hash/hash32 (; 62 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/hash/hash32 (; 76 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 255 i32.and @@ -4470,7 +5405,7 @@ i32.const 16777619 i32.mul ) - (func $~lib/set/Set#find (; 63 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/set/Set#find (; 77 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.load local.get $0 @@ -4513,7 +5448,7 @@ end i32.const 0 ) - (func $~lib/set/Set#has (; 64 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/set/Set#has (; 78 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 local.get $1 @@ -4522,7 +5457,7 @@ i32.const 0 i32.ne ) - (func $~lib/set/Set#rehash (; 65 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#rehash (; 79 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -4650,7 +5585,7 @@ local.get $4 call $~lib/rt/pure/__release ) - (func $~lib/set/Set#add (; 66 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#add (; 80 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -4733,7 +5668,130 @@ i32.store end ) - (func $~lib/set/Set#delete (; 67 ;) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#__set (; 81 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + local.get $1 + i32.const 0 + i32.lt_s + if + i32.const 280 + i32.const 416 + i32.const 109 + i32.const 21 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $3 + i32.const 2 + call $~lib/array/ensureSize + local.get $0 + local.get $3 + i32.store offset=12 + end + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $2 + i32.store + ) + (func $~lib/set/Set#values (; 82 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.load offset=8 + local.set $4 + local.get $0 + i32.load offset=16 + local.set $1 + i32.const 16 + i32.const 12 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.get $1 + i32.const 2 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $2 + i32.const 0 + i32.store offset=12 + local.get $2 + local.get $1 + i32.store offset=12 + i32.const 0 + local.set $0 + loop $loop|0 + local.get $3 + local.get $1 + i32.lt_s + if + local.get $3 + i32.const 3 + i32.shl + local.get $4 + i32.add + local.tee $5 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz + if + local.get $0 + local.tee $6 + i32.const 1 + i32.add + local.set $0 + local.get $2 + local.get $6 + local.get $5 + i32.load + call $~lib/array/Array#__set + end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $loop|0 + end + end + local.get $2 + ) + (func $~lib/array/Array#__get (; 83 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 280 + i32.const 416 + i32.const 93 + i32.const 41 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + ) + (func $~lib/set/Set#delete (; 84 ;) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 local.get $1 @@ -4792,9 +5850,11 @@ call $~lib/set/Set#rehash end ) - (func $std/set/testNumeric (; 68 ;) (type $FUNCSIG$v) + (func $std/set/testNumeric (; 85 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) + (local $2 i32) + (local $3 i32) call $~lib/set/Set#constructor local.set $1 loop $loop|0 @@ -4902,9 +5962,62 @@ call $~lib/builtins/abort unreachable end + local.get $1 + call $~lib/set/Set#values + local.set $2 + call $~lib/set/Set#constructor + local.set $3 i32.const 0 local.set $0 loop $loop|2 + local.get $0 + local.get $2 + i32.load offset=12 + i32.lt_s + if + local.get $1 + local.get $2 + local.get $0 + call $~lib/array/Array#__get + call $~lib/set/Set#has + if + local.get $3 + local.get $2 + local.get $0 + call $~lib/array/Array#__get + call $~lib/set/Set#add + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $loop|2 + else + i32.const 0 + i32.const 376 + i32.const 24 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + unreachable + end + end + local.get $3 + i32.load offset=20 + local.get $1 + i32.load offset=20 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 27 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $loop|3 local.get $0 i32.const 50 i32.lt_s @@ -4916,7 +6029,7 @@ if i32.const 0 i32.const 376 - i32.const 22 + i32.const 31 i32.const 4 call $~lib/builtins/abort unreachable @@ -4930,7 +6043,7 @@ if i32.const 0 i32.const 376 - i32.const 24 + i32.const 33 i32.const 4 call $~lib/builtins/abort unreachable @@ -4939,7 +6052,7 @@ i32.const 1 i32.add local.set $0 - br $loop|2 + br $loop|3 end unreachable end @@ -4951,14 +6064,14 @@ if i32.const 0 i32.const 376 - i32.const 26 + i32.const 35 i32.const 2 call $~lib/builtins/abort unreachable end i32.const 0 local.set $0 - loop $loop|3 + loop $loop|4 local.get $0 i32.const 50 i32.lt_s @@ -4969,7 +6082,7 @@ if i32.const 0 i32.const 376 - i32.const 30 + i32.const 39 i32.const 4 call $~lib/builtins/abort unreachable @@ -4984,7 +6097,7 @@ if i32.const 0 i32.const 376 - i32.const 32 + i32.const 41 i32.const 4 call $~lib/builtins/abort unreachable @@ -4998,7 +6111,7 @@ if i32.const 0 i32.const 376 - i32.const 34 + i32.const 43 i32.const 4 call $~lib/builtins/abort unreachable @@ -5007,7 +6120,7 @@ i32.const 1 i32.add local.set $0 - br $loop|3 + br $loop|4 end unreachable end @@ -5019,7 +6132,7 @@ if i32.const 0 i32.const 376 - i32.const 36 + i32.const 45 i32.const 2 call $~lib/builtins/abort unreachable @@ -5031,18 +6144,22 @@ if i32.const 0 i32.const 376 - i32.const 40 + i32.const 49 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $2 + call $~lib/rt/pure/__release + local.get $3 + call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release ) - (func $~lib/set/Set#constructor (; 69 ;) (result i32) + (func $~lib/set/Set#constructor (; 86 ;) (result i32) (local $0 i32) i32.const 24 - i32.const 8 + i32.const 13 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain local.tee $0 @@ -5067,9 +6184,75 @@ call $~lib/set/Set#clear local.get $0 ) - (func $std/set/testNumeric (; 70 ;) (type $FUNCSIG$v) + (func $~lib/set/Set#values (; 87 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.load offset=8 + local.set $4 + local.get $0 + i32.load offset=16 + local.set $1 + i32.const 16 + i32.const 14 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.get $1 + i32.const 2 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $2 + i32.const 0 + i32.store offset=12 + local.get $2 + local.get $1 + i32.store offset=12 + i32.const 0 + local.set $0 + loop $loop|0 + local.get $3 + local.get $1 + i32.lt_s + if + local.get $3 + i32.const 3 + i32.shl + local.get $4 + i32.add + local.tee $5 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz + if + local.get $0 + local.tee $6 + i32.const 1 + i32.add + local.set $0 + local.get $2 + local.get $6 + local.get $5 + i32.load + call $~lib/array/Array#__set + end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $loop|0 + end + end + local.get $2 + ) + (func $std/set/testNumeric (; 88 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) + (local $2 i32) + (local $3 i32) call $~lib/set/Set#constructor local.set $1 loop $loop|0 @@ -5177,9 +6360,62 @@ call $~lib/builtins/abort unreachable end + local.get $1 + call $~lib/set/Set#values + local.set $2 + call $~lib/set/Set#constructor + local.set $3 i32.const 0 local.set $0 loop $loop|2 + local.get $0 + local.get $2 + i32.load offset=12 + i32.lt_s + if + local.get $1 + local.get $2 + local.get $0 + call $~lib/array/Array#__get + call $~lib/set/Set#has + if + local.get $3 + local.get $2 + local.get $0 + call $~lib/array/Array#__get + call $~lib/set/Set#add + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $loop|2 + else + i32.const 0 + i32.const 376 + i32.const 24 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + unreachable + end + end + local.get $3 + i32.load offset=20 + local.get $1 + i32.load offset=20 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 27 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $loop|3 local.get $0 i32.const 50 i32.lt_u @@ -5191,7 +6427,7 @@ if i32.const 0 i32.const 376 - i32.const 22 + i32.const 31 i32.const 4 call $~lib/builtins/abort unreachable @@ -5205,7 +6441,7 @@ if i32.const 0 i32.const 376 - i32.const 24 + i32.const 33 i32.const 4 call $~lib/builtins/abort unreachable @@ -5214,7 +6450,7 @@ i32.const 1 i32.add local.set $0 - br $loop|2 + br $loop|3 end unreachable end @@ -5226,14 +6462,14 @@ if i32.const 0 i32.const 376 - i32.const 26 + i32.const 35 i32.const 2 call $~lib/builtins/abort unreachable end i32.const 0 local.set $0 - loop $loop|3 + loop $loop|4 local.get $0 i32.const 50 i32.lt_u @@ -5244,7 +6480,7 @@ if i32.const 0 i32.const 376 - i32.const 30 + i32.const 39 i32.const 4 call $~lib/builtins/abort unreachable @@ -5259,7 +6495,7 @@ if i32.const 0 i32.const 376 - i32.const 32 + i32.const 41 i32.const 4 call $~lib/builtins/abort unreachable @@ -5273,7 +6509,7 @@ if i32.const 0 i32.const 376 - i32.const 34 + i32.const 43 i32.const 4 call $~lib/builtins/abort unreachable @@ -5282,7 +6518,7 @@ i32.const 1 i32.add local.set $0 - br $loop|3 + br $loop|4 end unreachable end @@ -5294,7 +6530,7 @@ if i32.const 0 i32.const 376 - i32.const 36 + i32.const 45 i32.const 2 call $~lib/builtins/abort unreachable @@ -5306,15 +6542,19 @@ if i32.const 0 i32.const 376 - i32.const 40 + i32.const 49 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $2 + call $~lib/rt/pure/__release + local.get $3 + call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release ) - (func $~lib/set/Set#clear (; 71 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/set/Set#clear (; 89 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor @@ -5347,10 +6587,10 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/set/Set#constructor (; 72 ;) (result i32) + (func $~lib/set/Set#constructor (; 90 ;) (result i32) (local $0 i32) i32.const 24 - i32.const 9 + i32.const 15 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain local.tee $0 @@ -5375,7 +6615,7 @@ call $~lib/set/Set#clear local.get $0 ) - (func $~lib/util/hash/hash64 (; 73 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/util/hash/hash64 (; 91 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) (local $1 i32) local.get $0 i32.wrap_i64 @@ -5441,7 +6681,7 @@ i32.const 16777619 i32.mul ) - (func $~lib/set/Set#find (; 74 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + (func $~lib/set/Set#find (; 92 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) local.get $0 i32.load local.get $0 @@ -5484,7 +6724,7 @@ end i32.const 0 ) - (func $~lib/set/Set#has (; 75 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) + (func $~lib/set/Set#has (; 93 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) local.get $0 local.get $1 local.get $1 @@ -5493,7 +6733,7 @@ i32.const 0 i32.ne ) - (func $~lib/set/Set#rehash (; 76 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#rehash (; 94 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -5621,7 +6861,7 @@ local.get $4 call $~lib/rt/pure/__release ) - (func $~lib/set/Set#add (; 77 ;) (type $FUNCSIG$vij) (param $0 i32) (param $1 i64) + (func $~lib/set/Set#add (; 95 ;) (type $FUNCSIG$vij) (param $0 i32) (param $1 i64) (local $2 i32) (local $3 i32) (local $4 i32) @@ -5704,7 +6944,130 @@ i32.store end ) - (func $~lib/set/Set#delete (; 78 ;) (param $0 i32) (param $1 i64) + (func $~lib/array/Array#__set (; 96 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + local.get $1 + i32.const 0 + i32.lt_s + if + i32.const 280 + i32.const 416 + i32.const 109 + i32.const 21 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $3 + i32.const 3 + call $~lib/array/ensureSize + local.get $0 + local.get $3 + i32.store offset=12 + end + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.get $2 + i64.store + ) + (func $~lib/set/Set#values (; 97 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.load offset=8 + local.set $4 + local.get $0 + i32.load offset=16 + local.set $1 + i32.const 16 + i32.const 16 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.get $1 + i32.const 3 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $2 + i32.const 0 + i32.store offset=12 + local.get $2 + local.get $1 + i32.store offset=12 + i32.const 0 + local.set $0 + loop $loop|0 + local.get $3 + local.get $1 + i32.lt_s + if + local.get $3 + i32.const 4 + i32.shl + local.get $4 + i32.add + local.tee $5 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $0 + local.tee $6 + i32.const 1 + i32.add + local.set $0 + local.get $2 + local.get $6 + local.get $5 + i64.load + call $~lib/array/Array#__set + end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $loop|0 + end + end + local.get $2 + ) + (func $~lib/array/Array#__get (; 98 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 280 + i32.const 416 + i32.const 93 + i32.const 41 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 3 + i32.shl + i32.add + i64.load + ) + (func $~lib/set/Set#delete (; 99 ;) (param $0 i32) (param $1 i64) (local $2 i32) (local $3 i32) local.get $0 @@ -5764,9 +7127,12 @@ call $~lib/set/Set#rehash end ) - (func $std/set/testNumeric (; 79 ;) (type $FUNCSIG$v) + (func $std/set/testNumeric (; 100 ;) (type $FUNCSIG$v) (local $0 i64) (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) call $~lib/set/Set#constructor local.set $1 loop $loop|0 @@ -5843,18 +7209,68 @@ local.get $0 call $~lib/set/Set#add local.get $1 - local.get $0 + local.get $0 + call $~lib/set/Set#has + if + local.get $0 + i64.const 1 + i64.add + local.set $0 + br $loop|1 + else + i32.const 0 + i32.const 376 + i32.const 16 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + unreachable + end + end + local.get $1 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 18 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/set/Set#values + local.set $2 + call $~lib/set/Set#constructor + local.set $4 + loop $loop|2 + local.get $3 + local.get $2 + i32.load offset=12 + i32.lt_s + if + local.get $1 + local.get $2 + local.get $3 + call $~lib/array/Array#__get call $~lib/set/Set#has if - local.get $0 - i64.const 1 - i64.add - local.set $0 - br $loop|1 + local.get $4 + local.get $2 + local.get $3 + call $~lib/array/Array#__get + call $~lib/set/Set#add + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $loop|2 else i32.const 0 i32.const 376 - i32.const 16 + i32.const 24 i32.const 4 call $~lib/builtins/abort unreachable @@ -5862,21 +7278,22 @@ unreachable end end + local.get $4 + i32.load offset=20 local.get $1 i32.load offset=20 - i32.const 100 i32.ne if i32.const 0 i32.const 376 - i32.const 18 + i32.const 27 i32.const 2 call $~lib/builtins/abort unreachable end i64.const 0 local.set $0 - loop $loop|2 + loop $loop|3 local.get $0 i64.const 50 i64.lt_s @@ -5888,7 +7305,7 @@ if i32.const 0 i32.const 376 - i32.const 22 + i32.const 31 i32.const 4 call $~lib/builtins/abort unreachable @@ -5902,7 +7319,7 @@ if i32.const 0 i32.const 376 - i32.const 24 + i32.const 33 i32.const 4 call $~lib/builtins/abort unreachable @@ -5911,7 +7328,7 @@ i64.const 1 i64.add local.set $0 - br $loop|2 + br $loop|3 end unreachable end @@ -5923,14 +7340,14 @@ if i32.const 0 i32.const 376 - i32.const 26 + i32.const 35 i32.const 2 call $~lib/builtins/abort unreachable end i64.const 0 local.set $0 - loop $loop|3 + loop $loop|4 local.get $0 i64.const 50 i64.lt_s @@ -5941,7 +7358,7 @@ if i32.const 0 i32.const 376 - i32.const 30 + i32.const 39 i32.const 4 call $~lib/builtins/abort unreachable @@ -5956,7 +7373,7 @@ if i32.const 0 i32.const 376 - i32.const 32 + i32.const 41 i32.const 4 call $~lib/builtins/abort unreachable @@ -5970,7 +7387,7 @@ if i32.const 0 i32.const 376 - i32.const 34 + i32.const 43 i32.const 4 call $~lib/builtins/abort unreachable @@ -5979,7 +7396,7 @@ i64.const 1 i64.add local.set $0 - br $loop|3 + br $loop|4 end unreachable end @@ -5991,7 +7408,7 @@ if i32.const 0 i32.const 376 - i32.const 36 + i32.const 45 i32.const 2 call $~lib/builtins/abort unreachable @@ -6003,18 +7420,22 @@ if i32.const 0 i32.const 376 - i32.const 40 + i32.const 49 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $2 + call $~lib/rt/pure/__release + local.get $4 + call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release ) - (func $~lib/set/Set#constructor (; 80 ;) (result i32) + (func $~lib/set/Set#constructor (; 101 ;) (result i32) (local $0 i32) i32.const 24 - i32.const 10 + i32.const 17 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain local.tee $0 @@ -6039,9 +7460,76 @@ call $~lib/set/Set#clear local.get $0 ) - (func $std/set/testNumeric (; 81 ;) (type $FUNCSIG$v) + (func $~lib/set/Set#values (; 102 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.load offset=8 + local.set $4 + local.get $0 + i32.load offset=16 + local.set $1 + i32.const 16 + i32.const 18 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.get $1 + i32.const 3 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $2 + i32.const 0 + i32.store offset=12 + local.get $2 + local.get $1 + i32.store offset=12 + i32.const 0 + local.set $0 + loop $loop|0 + local.get $3 + local.get $1 + i32.lt_s + if + local.get $3 + i32.const 4 + i32.shl + local.get $4 + i32.add + local.tee $5 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $0 + local.tee $6 + i32.const 1 + i32.add + local.set $0 + local.get $2 + local.get $6 + local.get $5 + i64.load + call $~lib/array/Array#__set + end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $loop|0 + end + end + local.get $2 + ) + (func $std/set/testNumeric (; 103 ;) (type $FUNCSIG$v) (local $0 i64) (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) call $~lib/set/Set#constructor local.set $1 loop $loop|0 @@ -6149,9 +7637,60 @@ call $~lib/builtins/abort unreachable end + local.get $1 + call $~lib/set/Set#values + local.set $2 + call $~lib/set/Set#constructor + local.set $4 + loop $loop|2 + local.get $3 + local.get $2 + i32.load offset=12 + i32.lt_s + if + local.get $1 + local.get $2 + local.get $3 + call $~lib/array/Array#__get + call $~lib/set/Set#has + if + local.get $4 + local.get $2 + local.get $3 + call $~lib/array/Array#__get + call $~lib/set/Set#add + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $loop|2 + else + i32.const 0 + i32.const 376 + i32.const 24 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + unreachable + end + end + local.get $4 + i32.load offset=20 + local.get $1 + i32.load offset=20 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 27 + i32.const 2 + call $~lib/builtins/abort + unreachable + end i64.const 0 local.set $0 - loop $loop|2 + loop $loop|3 local.get $0 i64.const 50 i64.lt_u @@ -6163,7 +7702,7 @@ if i32.const 0 i32.const 376 - i32.const 22 + i32.const 31 i32.const 4 call $~lib/builtins/abort unreachable @@ -6177,7 +7716,7 @@ if i32.const 0 i32.const 376 - i32.const 24 + i32.const 33 i32.const 4 call $~lib/builtins/abort unreachable @@ -6186,7 +7725,7 @@ i64.const 1 i64.add local.set $0 - br $loop|2 + br $loop|3 end unreachable end @@ -6198,14 +7737,14 @@ if i32.const 0 i32.const 376 - i32.const 26 + i32.const 35 i32.const 2 call $~lib/builtins/abort unreachable end i64.const 0 local.set $0 - loop $loop|3 + loop $loop|4 local.get $0 i64.const 50 i64.lt_u @@ -6216,7 +7755,7 @@ if i32.const 0 i32.const 376 - i32.const 30 + i32.const 39 i32.const 4 call $~lib/builtins/abort unreachable @@ -6231,7 +7770,7 @@ if i32.const 0 i32.const 376 - i32.const 32 + i32.const 41 i32.const 4 call $~lib/builtins/abort unreachable @@ -6245,7 +7784,7 @@ if i32.const 0 i32.const 376 - i32.const 34 + i32.const 43 i32.const 4 call $~lib/builtins/abort unreachable @@ -6254,7 +7793,7 @@ i64.const 1 i64.add local.set $0 - br $loop|3 + br $loop|4 end unreachable end @@ -6266,7 +7805,7 @@ if i32.const 0 i32.const 376 - i32.const 36 + i32.const 45 i32.const 2 call $~lib/builtins/abort unreachable @@ -6278,18 +7817,22 @@ if i32.const 0 i32.const 376 - i32.const 40 + i32.const 49 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $2 + call $~lib/rt/pure/__release + local.get $4 + call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release ) - (func $~lib/set/Set#constructor (; 82 ;) (result i32) + (func $~lib/set/Set#constructor (; 104 ;) (result i32) (local $0 i32) i32.const 24 - i32.const 11 + i32.const 19 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain local.tee $0 @@ -6314,7 +7857,7 @@ call $~lib/set/Set#clear local.get $0 ) - (func $~lib/set/Set#find (; 83 ;) (type $FUNCSIG$iifi) (param $0 i32) (param $1 f32) (param $2 i32) (result i32) + (func $~lib/set/Set#find (; 105 ;) (type $FUNCSIG$iifi) (param $0 i32) (param $1 f32) (param $2 i32) (result i32) local.get $0 i32.load local.get $0 @@ -6357,7 +7900,7 @@ end i32.const 0 ) - (func $~lib/set/Set#has (; 84 ;) (type $FUNCSIG$iif) (param $0 i32) (param $1 f32) (result i32) + (func $~lib/set/Set#has (; 106 ;) (type $FUNCSIG$iif) (param $0 i32) (param $1 f32) (result i32) local.get $0 local.get $1 local.get $1 @@ -6367,7 +7910,7 @@ i32.const 0 i32.ne ) - (func $~lib/set/Set#rehash (; 85 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#rehash (; 107 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -6496,7 +8039,7 @@ local.get $4 call $~lib/rt/pure/__release ) - (func $~lib/set/Set#add (; 86 ;) (type $FUNCSIG$vif) (param $0 i32) (param $1 f32) + (func $~lib/set/Set#add (; 108 ;) (type $FUNCSIG$vif) (param $0 i32) (param $1 f32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -6580,7 +8123,130 @@ i32.store end ) - (func $~lib/set/Set#delete (; 87 ;) (param $0 i32) (param $1 f32) + (func $~lib/array/Array#__set (; 109 ;) (type $FUNCSIG$viif) (param $0 i32) (param $1 i32) (param $2 f32) + (local $3 i32) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + local.get $1 + i32.const 0 + i32.lt_s + if + i32.const 280 + i32.const 416 + i32.const 109 + i32.const 21 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $3 + i32.const 2 + call $~lib/array/ensureSize + local.get $0 + local.get $3 + i32.store offset=12 + end + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $2 + f32.store + ) + (func $~lib/set/Set#values (; 110 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.load offset=8 + local.set $4 + local.get $0 + i32.load offset=16 + local.set $1 + i32.const 16 + i32.const 20 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.get $1 + i32.const 2 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $2 + i32.const 0 + i32.store offset=12 + local.get $2 + local.get $1 + i32.store offset=12 + i32.const 0 + local.set $0 + loop $loop|0 + local.get $3 + local.get $1 + i32.lt_s + if + local.get $3 + i32.const 3 + i32.shl + local.get $4 + i32.add + local.tee $5 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz + if + local.get $0 + local.tee $6 + i32.const 1 + i32.add + local.set $0 + local.get $2 + local.get $6 + local.get $5 + f32.load + call $~lib/array/Array#__set + end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $loop|0 + end + end + local.get $2 + ) + (func $~lib/array/Array#__get (; 111 ;) (type $FUNCSIG$fii) (param $0 i32) (param $1 i32) (result f32) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 280 + i32.const 416 + i32.const 93 + i32.const 41 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + f32.load + ) + (func $~lib/set/Set#delete (; 112 ;) (param $0 i32) (param $1 f32) (local $2 i32) (local $3 i32) local.get $0 @@ -6641,9 +8307,12 @@ call $~lib/set/Set#rehash end ) - (func $std/set/testNumeric (; 88 ;) (type $FUNCSIG$v) + (func $std/set/testNumeric (; 113 ;) (type $FUNCSIG$v) (local $0 f32) (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) call $~lib/set/Set#constructor local.set $1 loop $loop|0 @@ -6751,9 +8420,60 @@ call $~lib/builtins/abort unreachable end + local.get $1 + call $~lib/set/Set#values + local.set $2 + call $~lib/set/Set#constructor + local.set $4 + loop $loop|2 + local.get $3 + local.get $2 + i32.load offset=12 + i32.lt_s + if + local.get $1 + local.get $2 + local.get $3 + call $~lib/array/Array#__get + call $~lib/set/Set#has + if + local.get $4 + local.get $2 + local.get $3 + call $~lib/array/Array#__get + call $~lib/set/Set#add + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $loop|2 + else + i32.const 0 + i32.const 376 + i32.const 24 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + unreachable + end + end + local.get $4 + i32.load offset=20 + local.get $1 + i32.load offset=20 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 27 + i32.const 2 + call $~lib/builtins/abort + unreachable + end f32.const 0 local.set $0 - loop $loop|2 + loop $loop|3 local.get $0 f32.const 50 f32.lt @@ -6765,7 +8485,7 @@ if i32.const 0 i32.const 376 - i32.const 22 + i32.const 31 i32.const 4 call $~lib/builtins/abort unreachable @@ -6779,7 +8499,7 @@ if i32.const 0 i32.const 376 - i32.const 24 + i32.const 33 i32.const 4 call $~lib/builtins/abort unreachable @@ -6788,7 +8508,7 @@ f32.const 1 f32.add local.set $0 - br $loop|2 + br $loop|3 end unreachable end @@ -6800,14 +8520,14 @@ if i32.const 0 i32.const 376 - i32.const 26 + i32.const 35 i32.const 2 call $~lib/builtins/abort unreachable end f32.const 0 local.set $0 - loop $loop|3 + loop $loop|4 local.get $0 f32.const 50 f32.lt @@ -6818,7 +8538,7 @@ if i32.const 0 i32.const 376 - i32.const 30 + i32.const 39 i32.const 4 call $~lib/builtins/abort unreachable @@ -6833,7 +8553,7 @@ if i32.const 0 i32.const 376 - i32.const 32 + i32.const 41 i32.const 4 call $~lib/builtins/abort unreachable @@ -6847,7 +8567,7 @@ if i32.const 0 i32.const 376 - i32.const 34 + i32.const 43 i32.const 4 call $~lib/builtins/abort unreachable @@ -6856,7 +8576,7 @@ f32.const 1 f32.add local.set $0 - br $loop|3 + br $loop|4 end unreachable end @@ -6868,7 +8588,7 @@ if i32.const 0 i32.const 376 - i32.const 36 + i32.const 45 i32.const 2 call $~lib/builtins/abort unreachable @@ -6880,18 +8600,22 @@ if i32.const 0 i32.const 376 - i32.const 40 + i32.const 49 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $2 + call $~lib/rt/pure/__release + local.get $4 + call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release ) - (func $~lib/set/Set#constructor (; 89 ;) (result i32) + (func $~lib/set/Set#constructor (; 114 ;) (result i32) (local $0 i32) i32.const 24 - i32.const 12 + i32.const 21 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain local.tee $0 @@ -6916,7 +8640,7 @@ call $~lib/set/Set#clear local.get $0 ) - (func $~lib/set/Set#find (; 90 ;) (type $FUNCSIG$iidi) (param $0 i32) (param $1 f64) (param $2 i32) (result i32) + (func $~lib/set/Set#find (; 115 ;) (type $FUNCSIG$iidi) (param $0 i32) (param $1 f64) (param $2 i32) (result i32) local.get $0 i32.load local.get $0 @@ -6959,7 +8683,7 @@ end i32.const 0 ) - (func $~lib/set/Set#has (; 91 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) + (func $~lib/set/Set#has (; 116 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) local.get $0 local.get $1 local.get $1 @@ -6969,7 +8693,7 @@ i32.const 0 i32.ne ) - (func $~lib/set/Set#rehash (; 92 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#rehash (; 117 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -7098,7 +8822,7 @@ local.get $4 call $~lib/rt/pure/__release ) - (func $~lib/set/Set#add (; 93 ;) (type $FUNCSIG$vid) (param $0 i32) (param $1 f64) + (func $~lib/set/Set#add (; 118 ;) (type $FUNCSIG$vid) (param $0 i32) (param $1 f64) (local $2 i32) (local $3 i32) (local $4 i32) @@ -7182,7 +8906,130 @@ i32.store end ) - (func $~lib/set/Set#delete (; 94 ;) (param $0 i32) (param $1 f64) + (func $~lib/array/Array#__set (; 119 ;) (type $FUNCSIG$viid) (param $0 i32) (param $1 i32) (param $2 f64) + (local $3 i32) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + local.get $1 + i32.const 0 + i32.lt_s + if + i32.const 280 + i32.const 416 + i32.const 109 + i32.const 21 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $3 + i32.const 3 + call $~lib/array/ensureSize + local.get $0 + local.get $3 + i32.store offset=12 + end + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.get $2 + f64.store + ) + (func $~lib/set/Set#values (; 120 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.load offset=8 + local.set $4 + local.get $0 + i32.load offset=16 + local.set $1 + i32.const 16 + i32.const 22 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.get $1 + i32.const 3 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $2 + i32.const 0 + i32.store offset=12 + local.get $2 + local.get $1 + i32.store offset=12 + i32.const 0 + local.set $0 + loop $loop|0 + local.get $3 + local.get $1 + i32.lt_s + if + local.get $3 + i32.const 4 + i32.shl + local.get $4 + i32.add + local.tee $5 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $0 + local.tee $6 + i32.const 1 + i32.add + local.set $0 + local.get $2 + local.get $6 + local.get $5 + f64.load + call $~lib/array/Array#__set + end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $loop|0 + end + end + local.get $2 + ) + (func $~lib/array/Array#__get (; 121 ;) (type $FUNCSIG$dii) (param $0 i32) (param $1 i32) (result f64) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 280 + i32.const 416 + i32.const 93 + i32.const 41 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 3 + i32.shl + i32.add + f64.load + ) + (func $~lib/set/Set#delete (; 122 ;) (param $0 i32) (param $1 f64) (local $2 i32) (local $3 i32) local.get $0 @@ -7243,9 +9090,12 @@ call $~lib/set/Set#rehash end ) - (func $std/set/testNumeric (; 95 ;) (type $FUNCSIG$v) + (func $std/set/testNumeric (; 123 ;) (type $FUNCSIG$v) (local $0 f64) (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) call $~lib/set/Set#constructor local.set $1 loop $loop|0 @@ -7353,9 +9203,60 @@ call $~lib/builtins/abort unreachable end + local.get $1 + call $~lib/set/Set#values + local.set $2 + call $~lib/set/Set#constructor + local.set $4 + loop $loop|2 + local.get $3 + local.get $2 + i32.load offset=12 + i32.lt_s + if + local.get $1 + local.get $2 + local.get $3 + call $~lib/array/Array#__get + call $~lib/set/Set#has + if + local.get $4 + local.get $2 + local.get $3 + call $~lib/array/Array#__get + call $~lib/set/Set#add + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $loop|2 + else + i32.const 0 + i32.const 376 + i32.const 24 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + unreachable + end + end + local.get $4 + i32.load offset=20 + local.get $1 + i32.load offset=20 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 27 + i32.const 2 + call $~lib/builtins/abort + unreachable + end f64.const 0 local.set $0 - loop $loop|2 + loop $loop|3 local.get $0 f64.const 50 f64.lt @@ -7367,7 +9268,7 @@ if i32.const 0 i32.const 376 - i32.const 22 + i32.const 31 i32.const 4 call $~lib/builtins/abort unreachable @@ -7381,7 +9282,7 @@ if i32.const 0 i32.const 376 - i32.const 24 + i32.const 33 i32.const 4 call $~lib/builtins/abort unreachable @@ -7390,7 +9291,7 @@ f64.const 1 f64.add local.set $0 - br $loop|2 + br $loop|3 end unreachable end @@ -7402,14 +9303,14 @@ if i32.const 0 i32.const 376 - i32.const 26 + i32.const 35 i32.const 2 call $~lib/builtins/abort unreachable end f64.const 0 local.set $0 - loop $loop|3 + loop $loop|4 local.get $0 f64.const 50 f64.lt @@ -7420,7 +9321,7 @@ if i32.const 0 i32.const 376 - i32.const 30 + i32.const 39 i32.const 4 call $~lib/builtins/abort unreachable @@ -7435,7 +9336,7 @@ if i32.const 0 i32.const 376 - i32.const 32 + i32.const 41 i32.const 4 call $~lib/builtins/abort unreachable @@ -7449,7 +9350,7 @@ if i32.const 0 i32.const 376 - i32.const 34 + i32.const 43 i32.const 4 call $~lib/builtins/abort unreachable @@ -7458,7 +9359,7 @@ f64.const 1 f64.add local.set $0 - br $loop|3 + br $loop|4 end unreachable end @@ -7470,7 +9371,7 @@ if i32.const 0 i32.const 376 - i32.const 36 + i32.const 45 i32.const 2 call $~lib/builtins/abort unreachable @@ -7482,15 +9383,19 @@ if i32.const 0 i32.const 376 - i32.const 40 + i32.const 49 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $2 + call $~lib/rt/pure/__release + local.get $4 + call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release ) - (func $start (; 96 ;) (type $FUNCSIG$v) + (func $start (; 124 ;) (type $FUNCSIG$v) call $std/set/testNumeric call $std/set/testNumeric call $std/set/testNumeric @@ -7502,9 +9407,9 @@ call $std/set/testNumeric call $std/set/testNumeric ) - (func $~lib/rt/pure/__visit (; 97 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/pure/__visit (; 125 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) local.get $0 - i32.const 508 + i32.const 636 i32.lt_u if return @@ -7612,30 +9517,30 @@ unreachable end ) - (func $~lib/rt/__visit_members (; 98 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/__visit_members (; 126 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) block $folding-inner0 - block $switch$1$default - block $switch$1$case$4 + block $block$4$break + block $switch$1$default block $switch$1$case$2 local.get $0 i32.const 8 i32.sub i32.load - br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $switch$1$default + br_table $switch$1$case$2 $switch$1$case$2 $block$4$break $folding-inner0 $block$4$break $folding-inner0 $block$4$break $folding-inner0 $block$4$break $folding-inner0 $block$4$break $folding-inner0 $block$4$break $folding-inner0 $block$4$break $folding-inner0 $block$4$break $folding-inner0 $block$4$break $folding-inner0 $block$4$break $folding-inner0 $block$4$break $switch$1$default end return end + unreachable + end + local.get $0 + i32.load + local.tee $0 + if local.get $0 - i32.load - local.tee $0 - if - local.get $0 - local.get $1 - call $~lib/rt/pure/__visit - end - return + local.get $1 + call $~lib/rt/pure/__visit end - unreachable + return end local.get $0 i32.load @@ -7646,7 +9551,7 @@ local.get $1 call $~lib/rt/pure/__visit ) - (func $null (; 99 ;) (type $FUNCSIG$v) + (func $null (; 127 ;) (type $FUNCSIG$v) unreachable ) ) diff --git a/tests/compiler/std/set.ts b/tests/compiler/std/set.ts index 76c61b97cb..2da500232d 100644 --- a/tests/compiler/std/set.ts +++ b/tests/compiler/std/set.ts @@ -17,6 +17,15 @@ function testNumeric(): void { } assert(set.size == 100); + // values + let vals = set.values(); + let valSet = new Set(); + for (let index = 0; index < vals.length; ++index) { + assert(set.has(vals[index])); + valSet.add(vals[index]); + } + assert(valSet.size == set.size); + // delete for (let k: K = 0; k < 50; ++k) { assert(set.has(k)); diff --git a/tests/compiler/std/set.untouched.wat b/tests/compiler/std/set.untouched.wat index 9713655ac1..635ce9fe20 100644 --- a/tests/compiler/std/set.untouched.wat +++ b/tests/compiler/std/set.untouched.wat @@ -11,12 +11,18 @@ (type $FUNCSIG$ij (func (param i64) (result i32))) (type $FUNCSIG$iiji (func (param i32 i64 i32) (result i32))) (type $FUNCSIG$vij (func (param i32 i64))) + (type $FUNCSIG$viij (func (param i32 i32 i64))) + (type $FUNCSIG$jii (func (param i32 i32) (result i64))) (type $FUNCSIG$iif (func (param i32 f32) (result i32))) (type $FUNCSIG$iifi (func (param i32 f32 i32) (result i32))) (type $FUNCSIG$vif (func (param i32 f32))) + (type $FUNCSIG$viif (func (param i32 i32 f32))) + (type $FUNCSIG$fii (func (param i32 i32) (result f32))) (type $FUNCSIG$iid (func (param i32 f64) (result i32))) (type $FUNCSIG$iidi (func (param i32 f64 i32) (result i32))) (type $FUNCSIG$vid (func (param i32 f64))) + (type $FUNCSIG$viid (func (param i32 i32 f64))) + (type $FUNCSIG$dii (func (param i32 i32) (result f64))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (import "rtrace" "onfree" (func $~lib/rt/rtrace/onfree (param i32))) (import "rtrace" "onalloc" (func $~lib/rt/rtrace/onalloc (param i32))) @@ -31,7 +37,8 @@ (data (i32.const 264) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00") (data (i32.const 320) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00") (data (i32.const 360) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00s\00t\00d\00/\00s\00e\00t\00.\00t\00s\00") - (data (i32.const 400) "\0d\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\004\04\00\00\00\00\00\004\00\00\00\00\00\00\00T\04\00\00\00\00\00\00T\00\00\00\00\00\00\00\94\04\00\00\00\00\00\00\94\00\00\00\00\00\00\00\14\05\00\00\00\00\00\00\14\01\00\00\00\00\00\00\94\0c\00\00\00\00\00\00\14\0d\00\00\00\00\00\00") + (data (i32.const 400) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00") + (data (i32.const 448) "\17\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\004\04\00\00\00\00\00\003\04\00\00\02\00\00\004\00\00\00\00\00\00\003\00\00\00\02\00\00\00T\04\00\00\00\00\00\00S\04\00\00\02\00\00\00T\00\00\00\00\00\00\00S\00\00\00\02\00\00\00\94\04\00\00\00\00\00\00\93\04\00\00\02\00\00\00\94\00\00\00\00\00\00\00\93\00\00\00\02\00\00\00\14\05\00\00\00\00\00\00\13\05\00\00\02\00\00\00\14\01\00\00\00\00\00\00\13\01\00\00\02\00\00\00\94\0c\00\00\00\00\00\00\93\0c\00\00\02\00\00\00\14\0d\00\00\00\00\00\00\13\0d\00\00\02\00\00\00") (table $0 1 funcref) (elem (i32.const 0) $null) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) @@ -41,8 +48,8 @@ (global $~lib/rt/pure/CUR (mut i32) (i32.const 0)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $~lib/rt/pure/END (mut i32) (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 400)) - (global $~lib/heap/__heap_base i32 (i32.const 508)) + (global $~lib/rt/__rtti_base i32 (i32.const 448)) + (global $~lib/heap/__heap_base i32 (i32.const 636)) (export "memory" (memory $0)) (start $start) (func $~lib/rt/tlsf/removeBlock (; 5 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) @@ -3966,7 +3973,481 @@ local.get $0 i32.load offset=20 ) - (func $~lib/set/Set#delete (; 41 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/arraybuffer/ArrayBufferView#constructor (; 41 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.const 1073741808 + local.get $2 + i32.shr_u + i32.gt_u + if + i32.const 176 + i32.const 224 + i32.const 23 + i32.const 56 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.shl + local.tee $1 + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.set $3 + local.get $3 + i32.const 0 + local.get $1 + call $~lib/memory/memory.fill + local.get $0 + i32.eqz + if + i32.const 12 + i32.const 2 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.set $0 + end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + local.tee $4 + local.get $3 + local.tee $5 + local.get $4 + i32.load + local.tee $6 + i32.ne + if + local.get $5 + call $~lib/rt/pure/__retain + local.set $5 + local.get $6 + call $~lib/rt/pure/__release + end + local.get $5 + i32.store + local.get $0 + local.get $3 + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $0 + ) + (func $~lib/array/Array#constructor (; 42 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + if (result i32) + local.get $0 + else + i32.const 16 + i32.const 4 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + end + local.get $1 + i32.const 0 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.set $0 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + local.get $1 + i32.store offset=12 + local.get $0 + ) + (func $~lib/rt/tlsf/reallocateBlock (; 43 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $2 + call $~lib/rt/tlsf/prepareSize + local.set $3 + local.get $1 + i32.load + local.set $4 + local.get $4 + i32.const 1 + i32.and + i32.eqz + if (result i32) + local.get $1 + i32.load offset=4 + i32.const -268435456 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 521 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $4 + i32.const -4 + i32.and + i32.le_u + if + local.get $0 + local.get $1 + local.get $3 + call $~lib/rt/tlsf/prepareBlock + local.get $1 + local.get $2 + i32.store offset=12 + local.get $1 + return + end + local.get $1 + local.set $5 + local.get $5 + i32.const 16 + i32.add + local.get $5 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.set $6 + local.get $6 + i32.load + local.set $7 + local.get $7 + i32.const 1 + i32.and + if + local.get $4 + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.add + local.get $7 + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.set $5 + local.get $5 + local.get $3 + i32.ge_u + if + local.get $0 + local.get $6 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $4 + i32.const 3 + i32.and + local.get $5 + i32.or + i32.store + local.get $1 + local.get $2 + i32.store offset=12 + local.get $0 + local.get $1 + local.get $3 + call $~lib/rt/tlsf/prepareBlock + local.get $1 + return + end + end + local.get $0 + local.get $2 + call $~lib/rt/tlsf/allocateBlock + local.set $8 + local.get $8 + local.get $1 + i32.load offset=8 + i32.store offset=8 + local.get $8 + i32.const 16 + i32.add + local.get $1 + i32.const 16 + i32.add + local.get $2 + call $~lib/memory/memory.copy + local.get $1 + local.get $4 + i32.const 1 + i32.or + i32.store + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + local.get $1 + call $~lib/rt/rtrace/onfree + local.get $8 + ) + (func $~lib/rt/tlsf/__realloc (; 44 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 585 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 0 + i32.ne + if (result i32) + local.get $0 + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 586 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 16 + i32.sub + local.get $1 + call $~lib/rt/tlsf/reallocateBlock + i32.const 16 + i32.add + ) + (func $~lib/array/ensureSize (; 45 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.load offset=8 + local.set $3 + local.get $1 + local.get $3 + local.get $2 + i32.shr_u + i32.gt_u + if + local.get $1 + i32.const 1073741808 + local.get $2 + i32.shr_u + i32.gt_u + if + i32.const 176 + i32.const 416 + i32.const 14 + i32.const 47 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load + local.set $4 + local.get $1 + local.get $2 + i32.shl + local.set $5 + local.get $4 + local.get $5 + call $~lib/rt/tlsf/__realloc + local.set $6 + local.get $6 + local.get $3 + i32.add + i32.const 0 + local.get $5 + local.get $3 + i32.sub + call $~lib/memory/memory.fill + local.get $6 + local.get $4 + i32.ne + if + local.get $0 + local.get $6 + call $~lib/rt/pure/__retain + i32.store + local.get $0 + local.get $6 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.store offset=8 + end + ) + (func $~lib/array/Array#__unchecked_set (; 46 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 0 + i32.shl + i32.add + local.get $2 + i32.store8 + ) + (func $~lib/array/Array#__set (; 47 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + local.get $1 + i32.const 0 + i32.lt_s + if + i32.const 280 + i32.const 416 + i32.const 109 + i32.const 21 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.const 0 + call $~lib/array/ensureSize + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.store offset=12 + end + local.get $0 + local.get $1 + local.get $2 + call $~lib/array/Array#__unchecked_set + ) + (func $~lib/set/Set#values (; 48 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + local.get $0 + i32.load offset=8 + local.set $1 + local.get $0 + i32.load offset=16 + local.set $2 + i32.const 0 + local.get $2 + call $~lib/array/Array#constructor + local.set $3 + i32.const 0 + local.set $4 + block $break|0 + i32.const 0 + local.set $5 + loop $loop|0 + local.get $5 + local.get $2 + i32.lt_s + i32.eqz + br_if $break|0 + local.get $1 + local.get $5 + i32.const 8 + i32.mul + i32.add + local.set $6 + local.get $6 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz + if + local.get $3 + local.get $4 + local.tee $7 + i32.const 1 + i32.add + local.set $4 + local.get $7 + local.get $6 + i32.load8_s + call $~lib/array/Array#__set + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $loop|0 + end + unreachable + end + local.get $3 + ) + (func $~lib/array/Array#get:length (; 49 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=12 + ) + (func $~lib/array/Array#__unchecked_get (; 50 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 0 + i32.shl + i32.add + i32.load8_s + ) + (func $~lib/array/Array#__get (; 51 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 280 + i32.const 416 + i32.const 93 + i32.const 41 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/array/Array#__unchecked_get + local.set $2 + local.get $2 + ) + (func $~lib/set/Set#delete (; 52 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -4042,9 +4523,11 @@ end i32.const 1 ) - (func $std/set/testNumeric (; 42 ;) (type $FUNCSIG$v) + (func $std/set/testNumeric (; 53 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) + (local $2 i32) + (local $3 i32) i32.const 0 call $~lib/set/Set#constructor local.set $0 @@ -4163,49 +4646,106 @@ call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/set/Set#values + local.set $1 + i32.const 0 + call $~lib/set/Set#constructor + local.set $2 block $break|2 i32.const 0 - local.set $1 + local.set $3 loop $loop|2 + local.get $3 local.get $1 - i32.const 50 + call $~lib/array/Array#get:length i32.lt_s i32.eqz br_if $break|2 local.get $0 local.get $1 + local.get $3 + call $~lib/array/Array#__get call $~lib/set/Set#has i32.eqz if i32.const 0 i32.const 376 - i32.const 22 + i32.const 24 i32.const 4 call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 local.get $1 + local.get $3 + call $~lib/array/Array#__get + call $~lib/set/Set#add + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $loop|2 + end + unreachable + end + local.get $2 + call $~lib/set/Set#get:size + local.get $0 + call $~lib/set/Set#get:size + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 27 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + block $break|3 + i32.const 0 + local.set $3 + loop $loop|3 + local.get $3 + i32.const 50 + i32.lt_s + i32.eqz + br_if $break|3 + local.get $0 + local.get $3 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 31 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $3 call $~lib/set/Set#delete drop local.get $0 - local.get $1 + local.get $3 call $~lib/set/Set#has i32.eqz i32.eqz if i32.const 0 i32.const 376 - i32.const 24 + i32.const 33 i32.const 4 call $~lib/builtins/abort unreachable end - local.get $1 + local.get $3 i32.const 1 i32.add - local.set $1 - br $loop|2 + local.set $3 + br $loop|3 end unreachable end @@ -4217,70 +4757,70 @@ if i32.const 0 i32.const 376 - i32.const 26 + i32.const 35 i32.const 2 call $~lib/builtins/abort unreachable end - block $break|3 + block $break|4 i32.const 0 - local.set $1 - loop $loop|3 - local.get $1 + local.set $3 + loop $loop|4 + local.get $3 i32.const 50 i32.lt_s i32.eqz - br_if $break|3 + br_if $break|4 local.get $0 - local.get $1 + local.get $3 call $~lib/set/Set#has i32.eqz i32.eqz if i32.const 0 i32.const 376 - i32.const 30 + i32.const 39 i32.const 4 call $~lib/builtins/abort unreachable end local.get $0 - local.get $1 + local.get $3 call $~lib/set/Set#add local.get $0 - local.get $1 + local.get $3 call $~lib/set/Set#has i32.eqz if i32.const 0 i32.const 376 - i32.const 32 + i32.const 41 i32.const 4 call $~lib/builtins/abort unreachable end local.get $0 - local.get $1 + local.get $3 call $~lib/set/Set#delete drop local.get $0 - local.get $1 + local.get $3 call $~lib/set/Set#has i32.eqz i32.eqz if i32.const 0 i32.const 376 - i32.const 34 + i32.const 43 i32.const 4 call $~lib/builtins/abort unreachable end - local.get $1 + local.get $3 i32.const 1 i32.add - local.set $1 - br $loop|3 + local.set $3 + br $loop|4 end unreachable end @@ -4292,7 +4832,7 @@ if i32.const 0 i32.const 376 - i32.const 36 + i32.const 45 i32.const 2 call $~lib/builtins/abort unreachable @@ -4307,15 +4847,19 @@ if i32.const 0 i32.const 376 - i32.const 40 + i32.const 49 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $1 + call $~lib/rt/pure/__release + local.get $2 + call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/set/Set#clear (; 43 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/set/Set#clear (; 54 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 @@ -4355,12 +4899,12 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/set/Set#constructor (; 44 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/set/Set#constructor (; 55 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if i32.const 24 - i32.const 4 + i32.const 5 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain local.set $0 @@ -4387,7 +4931,7 @@ call $~lib/set/Set#clear local.get $0 ) - (func $~lib/set/Set#find (; 45 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/set/Set#find (; 56 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $0 i32.load @@ -4437,7 +4981,7 @@ end i32.const 0 ) - (func $~lib/set/Set#has (; 46 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/set/Set#has (; 57 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 local.get $1 @@ -4454,7 +4998,7 @@ i32.const 0 i32.ne ) - (func $~lib/set/Set#rehash (; 47 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#rehash (; 58 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -4607,7 +5151,7 @@ local.get $5 call $~lib/rt/pure/__release ) - (func $~lib/set/Set#add (; 48 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#add (; 59 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -4654,57 +5198,218 @@ i32.const 1 i32.shl i32.const 1 - i32.or + i32.or + end + call $~lib/set/Set#rehash + end + local.get $0 + i32.load offset=8 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $2 + i32.const 1 + i32.add + i32.store offset=16 + local.get $2 + i32.const 8 + i32.mul + i32.add + local.set $4 + local.get $4 + local.get $1 + i32.store8 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + local.get $0 + i32.load + local.get $3 + local.get $0 + i32.load offset=4 + i32.and + i32.const 4 + i32.mul + i32.add + local.set $2 + local.get $4 + local.get $2 + i32.load + i32.store offset=4 + local.get $2 + local.get $4 + i32.store + end + ) + (func $~lib/set/Set#get:size (; 60 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=20 + ) + (func $~lib/array/Array#constructor (; 61 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + if (result i32) + local.get $0 + else + i32.const 16 + i32.const 6 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + end + local.get $1 + i32.const 0 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.set $0 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + local.get $1 + i32.store offset=12 + local.get $0 + ) + (func $~lib/array/Array#__unchecked_set (; 62 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 0 + i32.shl + i32.add + local.get $2 + i32.store8 + ) + (func $~lib/array/Array#__set (; 63 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + local.get $1 + i32.const 0 + i32.lt_s + if + i32.const 280 + i32.const 416 + i32.const 109 + i32.const 21 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.const 0 + call $~lib/array/ensureSize + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.store offset=12 + end + local.get $0 + local.get $1 + local.get $2 + call $~lib/array/Array#__unchecked_set + ) + (func $~lib/set/Set#values (; 64 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + local.get $0 + i32.load offset=8 + local.set $1 + local.get $0 + i32.load offset=16 + local.set $2 + i32.const 0 + local.get $2 + call $~lib/array/Array#constructor + local.set $3 + i32.const 0 + local.set $4 + block $break|0 + i32.const 0 + local.set $5 + loop $loop|0 + local.get $5 + local.get $2 + i32.lt_s + i32.eqz + br_if $break|0 + local.get $1 + local.get $5 + i32.const 8 + i32.mul + i32.add + local.set $6 + local.get $6 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz + if + local.get $3 + local.get $4 + local.tee $7 + i32.const 1 + i32.add + local.set $4 + local.get $7 + local.get $6 + i32.load8_u + call $~lib/array/Array#__set end - call $~lib/set/Set#rehash + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $loop|0 end - local.get $0 - i32.load offset=8 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $2 - i32.const 1 - i32.add - i32.store offset=16 - local.get $2 - i32.const 8 - i32.mul - i32.add - local.set $4 - local.get $4 - local.get $1 - i32.store8 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $0 - i32.load - local.get $3 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - local.set $2 - local.get $4 - local.get $2 - i32.load - i32.store offset=4 - local.get $2 - local.get $4 - i32.store + unreachable end + local.get $3 ) - (func $~lib/set/Set#get:size (; 49 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#get:length (; 65 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - i32.load offset=20 + i32.load offset=12 + ) + (func $~lib/array/Array#__unchecked_get (; 66 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 0 + i32.shl + i32.add + i32.load8_u + ) + (func $~lib/array/Array#__get (; 67 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 280 + i32.const 416 + i32.const 93 + i32.const 41 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/array/Array#__unchecked_get + local.set $2 + local.get $2 ) - (func $~lib/set/Set#delete (; 50 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/set/Set#delete (; 68 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -4778,9 +5483,11 @@ end i32.const 1 ) - (func $std/set/testNumeric (; 51 ;) (type $FUNCSIG$v) + (func $std/set/testNumeric (; 69 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) + (local $2 i32) + (local $3 i32) i32.const 0 call $~lib/set/Set#constructor local.set $0 @@ -4899,49 +5606,106 @@ call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/set/Set#values + local.set $1 + i32.const 0 + call $~lib/set/Set#constructor + local.set $2 block $break|2 i32.const 0 - local.set $1 + local.set $3 loop $loop|2 + local.get $3 local.get $1 - i32.const 50 - i32.lt_u + call $~lib/array/Array#get:length + i32.lt_s i32.eqz br_if $break|2 local.get $0 local.get $1 + local.get $3 + call $~lib/array/Array#__get call $~lib/set/Set#has i32.eqz if i32.const 0 i32.const 376 - i32.const 22 + i32.const 24 i32.const 4 call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 local.get $1 + local.get $3 + call $~lib/array/Array#__get + call $~lib/set/Set#add + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $loop|2 + end + unreachable + end + local.get $2 + call $~lib/set/Set#get:size + local.get $0 + call $~lib/set/Set#get:size + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 27 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + block $break|3 + i32.const 0 + local.set $3 + loop $loop|3 + local.get $3 + i32.const 50 + i32.lt_u + i32.eqz + br_if $break|3 + local.get $0 + local.get $3 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 31 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $3 call $~lib/set/Set#delete drop local.get $0 - local.get $1 + local.get $3 call $~lib/set/Set#has i32.eqz i32.eqz if i32.const 0 i32.const 376 - i32.const 24 + i32.const 33 i32.const 4 call $~lib/builtins/abort unreachable end - local.get $1 + local.get $3 i32.const 1 i32.add - local.set $1 - br $loop|2 + local.set $3 + br $loop|3 end unreachable end @@ -4953,70 +5717,70 @@ if i32.const 0 i32.const 376 - i32.const 26 + i32.const 35 i32.const 2 call $~lib/builtins/abort unreachable end - block $break|3 + block $break|4 i32.const 0 - local.set $1 - loop $loop|3 - local.get $1 + local.set $3 + loop $loop|4 + local.get $3 i32.const 50 i32.lt_u i32.eqz - br_if $break|3 + br_if $break|4 local.get $0 - local.get $1 + local.get $3 call $~lib/set/Set#has i32.eqz i32.eqz if i32.const 0 i32.const 376 - i32.const 30 + i32.const 39 i32.const 4 call $~lib/builtins/abort unreachable end local.get $0 - local.get $1 + local.get $3 call $~lib/set/Set#add local.get $0 - local.get $1 + local.get $3 call $~lib/set/Set#has i32.eqz if i32.const 0 i32.const 376 - i32.const 32 + i32.const 41 i32.const 4 call $~lib/builtins/abort unreachable end local.get $0 - local.get $1 + local.get $3 call $~lib/set/Set#delete drop local.get $0 - local.get $1 + local.get $3 call $~lib/set/Set#has i32.eqz i32.eqz if i32.const 0 i32.const 376 - i32.const 34 + i32.const 43 i32.const 4 call $~lib/builtins/abort unreachable end - local.get $1 + local.get $3 i32.const 1 i32.add - local.set $1 - br $loop|3 + local.set $3 + br $loop|4 end unreachable end @@ -5028,7 +5792,7 @@ if i32.const 0 i32.const 376 - i32.const 36 + i32.const 45 i32.const 2 call $~lib/builtins/abort unreachable @@ -5043,15 +5807,19 @@ if i32.const 0 i32.const 376 - i32.const 40 + i32.const 49 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $1 + call $~lib/rt/pure/__release + local.get $2 + call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/set/Set#clear (; 52 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/set/Set#clear (; 70 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 @@ -5091,12 +5859,12 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/set/Set#constructor (; 53 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/set/Set#constructor (; 71 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if i32.const 24 - i32.const 5 + i32.const 7 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain local.set $0 @@ -5123,7 +5891,7 @@ call $~lib/set/Set#clear local.get $0 ) - (func $~lib/util/hash/hash16 (; 54 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/hash/hash16 (; 72 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) i32.const -2128831035 local.set $1 @@ -5145,7 +5913,7 @@ local.set $1 local.get $1 ) - (func $~lib/set/Set#find (; 55 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/set/Set#find (; 73 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $0 i32.load @@ -5197,7 +5965,7 @@ end i32.const 0 ) - (func $~lib/set/Set#has (; 56 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/set/Set#has (; 74 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 local.get $1 @@ -5216,7 +5984,7 @@ i32.const 0 i32.ne ) - (func $~lib/set/Set#rehash (; 57 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#rehash (; 75 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -5369,7 +6137,7 @@ local.get $5 call $~lib/rt/pure/__release ) - (func $~lib/set/Set#add (; 58 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#add (; 76 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -5464,11 +6232,172 @@ i32.store end ) - (func $~lib/set/Set#get:size (; 59 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/set/Set#get:size (; 77 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=20 + ) + (func $~lib/array/Array#constructor (; 78 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + if (result i32) + local.get $0 + else + i32.const 16 + i32.const 8 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + end + local.get $1 + i32.const 1 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.set $0 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + local.get $1 + i32.store offset=12 + local.get $0 + ) + (func $~lib/array/Array#__unchecked_set (; 79 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.get $2 + i32.store16 + ) + (func $~lib/array/Array#__set (; 80 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + local.get $1 + i32.const 0 + i32.lt_s + if + i32.const 280 + i32.const 416 + i32.const 109 + i32.const 21 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.const 1 + call $~lib/array/ensureSize + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.store offset=12 + end + local.get $0 + local.get $1 + local.get $2 + call $~lib/array/Array#__unchecked_set + ) + (func $~lib/set/Set#values (; 81 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + local.get $0 + i32.load offset=8 + local.set $1 + local.get $0 + i32.load offset=16 + local.set $2 + i32.const 0 + local.get $2 + call $~lib/array/Array#constructor + local.set $3 + i32.const 0 + local.set $4 + block $break|0 + i32.const 0 + local.set $5 + loop $loop|0 + local.get $5 + local.get $2 + i32.lt_s + i32.eqz + br_if $break|0 + local.get $1 + local.get $5 + i32.const 8 + i32.mul + i32.add + local.set $6 + local.get $6 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz + if + local.get $3 + local.get $4 + local.tee $7 + i32.const 1 + i32.add + local.set $4 + local.get $7 + local.get $6 + i32.load16_s + call $~lib/array/Array#__set + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $loop|0 + end + unreachable + end + local.get $3 + ) + (func $~lib/array/Array#get:length (; 82 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - i32.load offset=20 + i32.load offset=12 + ) + (func $~lib/array/Array#__unchecked_get (; 83 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.load16_s + ) + (func $~lib/array/Array#__get (; 84 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 280 + i32.const 416 + i32.const 93 + i32.const 41 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/array/Array#__unchecked_get + local.set $2 + local.get $2 ) - (func $~lib/set/Set#delete (; 60 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/set/Set#delete (; 85 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -5544,9 +6473,11 @@ end i32.const 1 ) - (func $std/set/testNumeric (; 61 ;) (type $FUNCSIG$v) + (func $std/set/testNumeric (; 86 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) + (local $2 i32) + (local $3 i32) i32.const 0 call $~lib/set/Set#constructor local.set $0 @@ -5665,49 +6596,106 @@ call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/set/Set#values + local.set $1 + i32.const 0 + call $~lib/set/Set#constructor + local.set $2 block $break|2 i32.const 0 - local.set $1 + local.set $3 loop $loop|2 + local.get $3 local.get $1 - i32.const 50 + call $~lib/array/Array#get:length i32.lt_s i32.eqz br_if $break|2 local.get $0 local.get $1 + local.get $3 + call $~lib/array/Array#__get call $~lib/set/Set#has i32.eqz if i32.const 0 i32.const 376 - i32.const 22 + i32.const 24 i32.const 4 call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 local.get $1 + local.get $3 + call $~lib/array/Array#__get + call $~lib/set/Set#add + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $loop|2 + end + unreachable + end + local.get $2 + call $~lib/set/Set#get:size + local.get $0 + call $~lib/set/Set#get:size + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 27 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + block $break|3 + i32.const 0 + local.set $3 + loop $loop|3 + local.get $3 + i32.const 50 + i32.lt_s + i32.eqz + br_if $break|3 + local.get $0 + local.get $3 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 31 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $3 call $~lib/set/Set#delete drop local.get $0 - local.get $1 + local.get $3 call $~lib/set/Set#has i32.eqz i32.eqz if i32.const 0 i32.const 376 - i32.const 24 + i32.const 33 i32.const 4 call $~lib/builtins/abort unreachable end - local.get $1 + local.get $3 i32.const 1 i32.add - local.set $1 - br $loop|2 + local.set $3 + br $loop|3 end unreachable end @@ -5719,70 +6707,70 @@ if i32.const 0 i32.const 376 - i32.const 26 + i32.const 35 i32.const 2 call $~lib/builtins/abort unreachable end - block $break|3 + block $break|4 i32.const 0 - local.set $1 - loop $loop|3 - local.get $1 + local.set $3 + loop $loop|4 + local.get $3 i32.const 50 i32.lt_s i32.eqz - br_if $break|3 + br_if $break|4 local.get $0 - local.get $1 + local.get $3 call $~lib/set/Set#has i32.eqz i32.eqz if i32.const 0 i32.const 376 - i32.const 30 + i32.const 39 i32.const 4 call $~lib/builtins/abort unreachable end local.get $0 - local.get $1 + local.get $3 call $~lib/set/Set#add local.get $0 - local.get $1 + local.get $3 call $~lib/set/Set#has i32.eqz if i32.const 0 i32.const 376 - i32.const 32 + i32.const 41 i32.const 4 call $~lib/builtins/abort unreachable end local.get $0 - local.get $1 + local.get $3 call $~lib/set/Set#delete drop local.get $0 - local.get $1 + local.get $3 call $~lib/set/Set#has i32.eqz i32.eqz if i32.const 0 i32.const 376 - i32.const 34 + i32.const 43 i32.const 4 call $~lib/builtins/abort unreachable end - local.get $1 + local.get $3 i32.const 1 i32.add - local.set $1 - br $loop|3 + local.set $3 + br $loop|4 end unreachable end @@ -5794,7 +6782,7 @@ if i32.const 0 i32.const 376 - i32.const 36 + i32.const 45 i32.const 2 call $~lib/builtins/abort unreachable @@ -5809,15 +6797,19 @@ if i32.const 0 i32.const 376 - i32.const 40 + i32.const 49 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $1 + call $~lib/rt/pure/__release + local.get $2 + call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/set/Set#clear (; 62 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/set/Set#clear (; 87 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 @@ -5857,12 +6849,12 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/set/Set#constructor (; 63 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/set/Set#constructor (; 88 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if i32.const 24 - i32.const 6 + i32.const 9 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain local.set $0 @@ -5889,7 +6881,7 @@ call $~lib/set/Set#clear local.get $0 ) - (func $~lib/set/Set#find (; 64 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/set/Set#find (; 89 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $0 i32.load @@ -5939,7 +6931,7 @@ end i32.const 0 ) - (func $~lib/set/Set#has (; 65 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/set/Set#has (; 90 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 local.get $1 @@ -5956,7 +6948,7 @@ i32.const 0 i32.ne ) - (func $~lib/set/Set#rehash (; 66 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#rehash (; 91 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -6109,7 +7101,7 @@ local.get $5 call $~lib/rt/pure/__release ) - (func $~lib/set/Set#add (; 67 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#add (; 92 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -6202,11 +7194,172 @@ i32.store end ) - (func $~lib/set/Set#get:size (; 68 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/set/Set#get:size (; 93 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=20 + ) + (func $~lib/array/Array#constructor (; 94 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + if (result i32) + local.get $0 + else + i32.const 16 + i32.const 10 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + end + local.get $1 + i32.const 1 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.set $0 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + local.get $1 + i32.store offset=12 + local.get $0 + ) + (func $~lib/array/Array#__unchecked_set (; 95 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.get $2 + i32.store16 + ) + (func $~lib/array/Array#__set (; 96 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + local.get $1 + i32.const 0 + i32.lt_s + if + i32.const 280 + i32.const 416 + i32.const 109 + i32.const 21 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.const 1 + call $~lib/array/ensureSize + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.store offset=12 + end + local.get $0 + local.get $1 + local.get $2 + call $~lib/array/Array#__unchecked_set + ) + (func $~lib/set/Set#values (; 97 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + local.get $0 + i32.load offset=8 + local.set $1 + local.get $0 + i32.load offset=16 + local.set $2 + i32.const 0 + local.get $2 + call $~lib/array/Array#constructor + local.set $3 + i32.const 0 + local.set $4 + block $break|0 + i32.const 0 + local.set $5 + loop $loop|0 + local.get $5 + local.get $2 + i32.lt_s + i32.eqz + br_if $break|0 + local.get $1 + local.get $5 + i32.const 8 + i32.mul + i32.add + local.set $6 + local.get $6 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz + if + local.get $3 + local.get $4 + local.tee $7 + i32.const 1 + i32.add + local.set $4 + local.get $7 + local.get $6 + i32.load16_u + call $~lib/array/Array#__set + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $loop|0 + end + unreachable + end + local.get $3 + ) + (func $~lib/array/Array#get:length (; 98 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - i32.load offset=20 + i32.load offset=12 + ) + (func $~lib/array/Array#__unchecked_get (; 99 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.load16_u + ) + (func $~lib/array/Array#__get (; 100 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 280 + i32.const 416 + i32.const 93 + i32.const 41 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/array/Array#__unchecked_get + local.set $2 + local.get $2 ) - (func $~lib/set/Set#delete (; 69 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/set/Set#delete (; 101 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -6280,9 +7433,11 @@ end i32.const 1 ) - (func $std/set/testNumeric (; 70 ;) (type $FUNCSIG$v) + (func $std/set/testNumeric (; 102 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) + (local $2 i32) + (local $3 i32) i32.const 0 call $~lib/set/Set#constructor local.set $0 @@ -6401,49 +7556,106 @@ call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/set/Set#values + local.set $1 + i32.const 0 + call $~lib/set/Set#constructor + local.set $2 block $break|2 i32.const 0 - local.set $1 + local.set $3 loop $loop|2 + local.get $3 local.get $1 - i32.const 50 - i32.lt_u + call $~lib/array/Array#get:length + i32.lt_s i32.eqz br_if $break|2 local.get $0 local.get $1 + local.get $3 + call $~lib/array/Array#__get call $~lib/set/Set#has i32.eqz if i32.const 0 i32.const 376 - i32.const 22 + i32.const 24 i32.const 4 call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 local.get $1 + local.get $3 + call $~lib/array/Array#__get + call $~lib/set/Set#add + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $loop|2 + end + unreachable + end + local.get $2 + call $~lib/set/Set#get:size + local.get $0 + call $~lib/set/Set#get:size + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 27 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + block $break|3 + i32.const 0 + local.set $3 + loop $loop|3 + local.get $3 + i32.const 50 + i32.lt_u + i32.eqz + br_if $break|3 + local.get $0 + local.get $3 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 31 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $3 call $~lib/set/Set#delete drop local.get $0 - local.get $1 + local.get $3 call $~lib/set/Set#has i32.eqz i32.eqz if i32.const 0 i32.const 376 - i32.const 24 + i32.const 33 i32.const 4 call $~lib/builtins/abort unreachable end - local.get $1 + local.get $3 i32.const 1 i32.add - local.set $1 - br $loop|2 + local.set $3 + br $loop|3 end unreachable end @@ -6455,70 +7667,70 @@ if i32.const 0 i32.const 376 - i32.const 26 + i32.const 35 i32.const 2 call $~lib/builtins/abort unreachable end - block $break|3 + block $break|4 i32.const 0 - local.set $1 - loop $loop|3 - local.get $1 + local.set $3 + loop $loop|4 + local.get $3 i32.const 50 i32.lt_u i32.eqz - br_if $break|3 + br_if $break|4 local.get $0 - local.get $1 + local.get $3 call $~lib/set/Set#has i32.eqz i32.eqz if i32.const 0 i32.const 376 - i32.const 30 + i32.const 39 i32.const 4 call $~lib/builtins/abort unreachable end local.get $0 - local.get $1 + local.get $3 call $~lib/set/Set#add local.get $0 - local.get $1 + local.get $3 call $~lib/set/Set#has i32.eqz if i32.const 0 i32.const 376 - i32.const 32 + i32.const 41 i32.const 4 call $~lib/builtins/abort unreachable end local.get $0 - local.get $1 + local.get $3 call $~lib/set/Set#delete drop local.get $0 - local.get $1 + local.get $3 call $~lib/set/Set#has i32.eqz i32.eqz if i32.const 0 i32.const 376 - i32.const 34 + i32.const 43 i32.const 4 call $~lib/builtins/abort unreachable end - local.get $1 + local.get $3 i32.const 1 i32.add - local.set $1 - br $loop|3 + local.set $3 + br $loop|4 end unreachable end @@ -6530,7 +7742,7 @@ if i32.const 0 i32.const 376 - i32.const 36 + i32.const 45 i32.const 2 call $~lib/builtins/abort unreachable @@ -6545,15 +7757,19 @@ if i32.const 0 i32.const 376 - i32.const 40 + i32.const 49 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $1 + call $~lib/rt/pure/__release + local.get $2 + call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/set/Set#clear (; 71 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/set/Set#clear (; 103 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 @@ -6593,12 +7809,12 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/set/Set#constructor (; 72 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/set/Set#constructor (; 104 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if i32.const 24 - i32.const 7 + i32.const 11 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain local.set $0 @@ -6625,7 +7841,7 @@ call $~lib/set/Set#clear local.get $0 ) - (func $~lib/util/hash/hash32 (; 73 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/hash/hash32 (; 105 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) i32.const -2128831035 local.set $1 @@ -6667,7 +7883,7 @@ local.set $1 local.get $1 ) - (func $~lib/set/Set#find (; 74 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/set/Set#find (; 106 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $0 i32.load @@ -6715,7 +7931,7 @@ end i32.const 0 ) - (func $~lib/set/Set#has (; 75 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/set/Set#has (; 107 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 local.get $1 @@ -6730,7 +7946,7 @@ i32.const 0 i32.ne ) - (func $~lib/set/Set#rehash (; 76 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#rehash (; 108 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -6883,7 +8099,7 @@ local.get $5 call $~lib/rt/pure/__release ) - (func $~lib/set/Set#add (; 77 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#add (; 109 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -6974,11 +8190,172 @@ i32.store end ) - (func $~lib/set/Set#get:size (; 78 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/set/Set#get:size (; 110 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=20 + ) + (func $~lib/array/Array#constructor (; 111 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + if (result i32) + local.get $0 + else + i32.const 16 + i32.const 12 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + end + local.get $1 + i32.const 2 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.set $0 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + local.get $1 + i32.store offset=12 + local.get $0 + ) + (func $~lib/array/Array#__unchecked_set (; 112 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $2 + i32.store + ) + (func $~lib/array/Array#__set (; 113 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + local.get $1 + i32.const 0 + i32.lt_s + if + i32.const 280 + i32.const 416 + i32.const 109 + i32.const 21 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.const 2 + call $~lib/array/ensureSize + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.store offset=12 + end + local.get $0 + local.get $1 + local.get $2 + call $~lib/array/Array#__unchecked_set + ) + (func $~lib/set/Set#values (; 114 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + local.get $0 + i32.load offset=8 + local.set $1 + local.get $0 + i32.load offset=16 + local.set $2 + i32.const 0 + local.get $2 + call $~lib/array/Array#constructor + local.set $3 + i32.const 0 + local.set $4 + block $break|0 + i32.const 0 + local.set $5 + loop $loop|0 + local.get $5 + local.get $2 + i32.lt_s + i32.eqz + br_if $break|0 + local.get $1 + local.get $5 + i32.const 8 + i32.mul + i32.add + local.set $6 + local.get $6 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz + if + local.get $3 + local.get $4 + local.tee $7 + i32.const 1 + i32.add + local.set $4 + local.get $7 + local.get $6 + i32.load + call $~lib/array/Array#__set + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $loop|0 + end + unreachable + end + local.get $3 + ) + (func $~lib/array/Array#get:length (; 115 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=12 + ) + (func $~lib/array/Array#__unchecked_get (; 116 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + ) + (func $~lib/array/Array#__get (; 117 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 local.get $0 - i32.load offset=20 + i32.load offset=12 + i32.ge_u + if + i32.const 280 + i32.const 416 + i32.const 93 + i32.const 41 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/array/Array#__unchecked_get + local.set $2 + local.get $2 ) - (func $~lib/set/Set#delete (; 79 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/set/Set#delete (; 118 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -7050,9 +8427,11 @@ end i32.const 1 ) - (func $std/set/testNumeric (; 80 ;) (type $FUNCSIG$v) + (func $std/set/testNumeric (; 119 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) + (local $2 i32) + (local $3 i32) i32.const 0 call $~lib/set/Set#constructor local.set $0 @@ -7171,49 +8550,106 @@ call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/set/Set#values + local.set $1 + i32.const 0 + call $~lib/set/Set#constructor + local.set $2 block $break|2 i32.const 0 - local.set $1 + local.set $3 loop $loop|2 + local.get $3 local.get $1 - i32.const 50 + call $~lib/array/Array#get:length i32.lt_s i32.eqz br_if $break|2 local.get $0 local.get $1 + local.get $3 + call $~lib/array/Array#__get call $~lib/set/Set#has i32.eqz if i32.const 0 i32.const 376 - i32.const 22 + i32.const 24 i32.const 4 call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 local.get $1 + local.get $3 + call $~lib/array/Array#__get + call $~lib/set/Set#add + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $loop|2 + end + unreachable + end + local.get $2 + call $~lib/set/Set#get:size + local.get $0 + call $~lib/set/Set#get:size + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 27 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + block $break|3 + i32.const 0 + local.set $3 + loop $loop|3 + local.get $3 + i32.const 50 + i32.lt_s + i32.eqz + br_if $break|3 + local.get $0 + local.get $3 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 31 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $3 call $~lib/set/Set#delete drop local.get $0 - local.get $1 + local.get $3 call $~lib/set/Set#has i32.eqz i32.eqz if i32.const 0 i32.const 376 - i32.const 24 + i32.const 33 i32.const 4 call $~lib/builtins/abort unreachable end - local.get $1 + local.get $3 i32.const 1 i32.add - local.set $1 - br $loop|2 + local.set $3 + br $loop|3 end unreachable end @@ -7225,70 +8661,70 @@ if i32.const 0 i32.const 376 - i32.const 26 + i32.const 35 i32.const 2 call $~lib/builtins/abort unreachable end - block $break|3 + block $break|4 i32.const 0 - local.set $1 - loop $loop|3 - local.get $1 + local.set $3 + loop $loop|4 + local.get $3 i32.const 50 i32.lt_s i32.eqz - br_if $break|3 + br_if $break|4 local.get $0 - local.get $1 + local.get $3 call $~lib/set/Set#has i32.eqz i32.eqz if i32.const 0 i32.const 376 - i32.const 30 + i32.const 39 i32.const 4 call $~lib/builtins/abort unreachable end local.get $0 - local.get $1 + local.get $3 call $~lib/set/Set#add local.get $0 - local.get $1 + local.get $3 call $~lib/set/Set#has i32.eqz if i32.const 0 i32.const 376 - i32.const 32 + i32.const 41 i32.const 4 call $~lib/builtins/abort unreachable end local.get $0 - local.get $1 + local.get $3 call $~lib/set/Set#delete drop local.get $0 - local.get $1 + local.get $3 call $~lib/set/Set#has i32.eqz i32.eqz if i32.const 0 i32.const 376 - i32.const 34 + i32.const 43 i32.const 4 call $~lib/builtins/abort unreachable end - local.get $1 + local.get $3 i32.const 1 i32.add - local.set $1 - br $loop|3 + local.set $3 + br $loop|4 end unreachable end @@ -7300,7 +8736,7 @@ if i32.const 0 i32.const 376 - i32.const 36 + i32.const 45 i32.const 2 call $~lib/builtins/abort unreachable @@ -7315,15 +8751,19 @@ if i32.const 0 i32.const 376 - i32.const 40 + i32.const 49 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $1 + call $~lib/rt/pure/__release + local.get $2 + call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/set/Set#clear (; 81 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/set/Set#clear (; 120 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 @@ -7363,12 +8803,12 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/set/Set#constructor (; 82 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/set/Set#constructor (; 121 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if i32.const 24 - i32.const 8 + i32.const 13 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain local.set $0 @@ -7395,7 +8835,7 @@ call $~lib/set/Set#clear local.get $0 ) - (func $~lib/set/Set#find (; 83 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/set/Set#find (; 122 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $0 i32.load @@ -7443,7 +8883,7 @@ end i32.const 0 ) - (func $~lib/set/Set#has (; 84 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/set/Set#has (; 123 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 local.get $1 @@ -7458,7 +8898,7 @@ i32.const 0 i32.ne ) - (func $~lib/set/Set#rehash (; 85 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#rehash (; 124 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -7611,7 +9051,7 @@ local.get $5 call $~lib/rt/pure/__release ) - (func $~lib/set/Set#add (; 86 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#add (; 125 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -7656,57 +9096,218 @@ i32.const 1 i32.shl i32.const 1 - i32.or + i32.or + end + call $~lib/set/Set#rehash + end + local.get $0 + i32.load offset=8 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $2 + i32.const 1 + i32.add + i32.store offset=16 + local.get $2 + i32.const 8 + i32.mul + i32.add + local.set $4 + local.get $4 + local.get $1 + i32.store + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + local.get $0 + i32.load + local.get $3 + local.get $0 + i32.load offset=4 + i32.and + i32.const 4 + i32.mul + i32.add + local.set $2 + local.get $4 + local.get $2 + i32.load + i32.store offset=4 + local.get $2 + local.get $4 + i32.store + end + ) + (func $~lib/set/Set#get:size (; 126 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=20 + ) + (func $~lib/array/Array#constructor (; 127 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + if (result i32) + local.get $0 + else + i32.const 16 + i32.const 14 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + end + local.get $1 + i32.const 2 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.set $0 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + local.get $1 + i32.store offset=12 + local.get $0 + ) + (func $~lib/array/Array#__unchecked_set (; 128 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $2 + i32.store + ) + (func $~lib/array/Array#__set (; 129 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + local.get $1 + i32.const 0 + i32.lt_s + if + i32.const 280 + i32.const 416 + i32.const 109 + i32.const 21 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.const 2 + call $~lib/array/ensureSize + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.store offset=12 + end + local.get $0 + local.get $1 + local.get $2 + call $~lib/array/Array#__unchecked_set + ) + (func $~lib/set/Set#values (; 130 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + local.get $0 + i32.load offset=8 + local.set $1 + local.get $0 + i32.load offset=16 + local.set $2 + i32.const 0 + local.get $2 + call $~lib/array/Array#constructor + local.set $3 + i32.const 0 + local.set $4 + block $break|0 + i32.const 0 + local.set $5 + loop $loop|0 + local.get $5 + local.get $2 + i32.lt_s + i32.eqz + br_if $break|0 + local.get $1 + local.get $5 + i32.const 8 + i32.mul + i32.add + local.set $6 + local.get $6 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz + if + local.get $3 + local.get $4 + local.tee $7 + i32.const 1 + i32.add + local.set $4 + local.get $7 + local.get $6 + i32.load + call $~lib/array/Array#__set end - call $~lib/set/Set#rehash + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $loop|0 end - local.get $0 - i32.load offset=8 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $2 - i32.const 1 - i32.add - i32.store offset=16 - local.get $2 - i32.const 8 - i32.mul - i32.add - local.set $4 - local.get $4 - local.get $1 - i32.store - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $0 - i32.load - local.get $3 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - local.set $2 - local.get $4 - local.get $2 - i32.load - i32.store offset=4 - local.get $2 - local.get $4 - i32.store + unreachable end + local.get $3 ) - (func $~lib/set/Set#get:size (; 87 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#get:length (; 131 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - i32.load offset=20 + i32.load offset=12 + ) + (func $~lib/array/Array#__unchecked_get (; 132 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + ) + (func $~lib/array/Array#__get (; 133 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 280 + i32.const 416 + i32.const 93 + i32.const 41 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/array/Array#__unchecked_get + local.set $2 + local.get $2 ) - (func $~lib/set/Set#delete (; 88 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/set/Set#delete (; 134 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -7778,9 +9379,11 @@ end i32.const 1 ) - (func $std/set/testNumeric (; 89 ;) (type $FUNCSIG$v) + (func $std/set/testNumeric (; 135 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) + (local $2 i32) + (local $3 i32) i32.const 0 call $~lib/set/Set#constructor local.set $0 @@ -7899,49 +9502,106 @@ call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/set/Set#values + local.set $1 + i32.const 0 + call $~lib/set/Set#constructor + local.set $2 block $break|2 i32.const 0 - local.set $1 + local.set $3 loop $loop|2 + local.get $3 local.get $1 - i32.const 50 - i32.lt_u + call $~lib/array/Array#get:length + i32.lt_s i32.eqz br_if $break|2 local.get $0 local.get $1 + local.get $3 + call $~lib/array/Array#__get call $~lib/set/Set#has i32.eqz if i32.const 0 i32.const 376 - i32.const 22 + i32.const 24 i32.const 4 call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 local.get $1 + local.get $3 + call $~lib/array/Array#__get + call $~lib/set/Set#add + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $loop|2 + end + unreachable + end + local.get $2 + call $~lib/set/Set#get:size + local.get $0 + call $~lib/set/Set#get:size + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 27 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + block $break|3 + i32.const 0 + local.set $3 + loop $loop|3 + local.get $3 + i32.const 50 + i32.lt_u + i32.eqz + br_if $break|3 + local.get $0 + local.get $3 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 31 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $3 call $~lib/set/Set#delete drop local.get $0 - local.get $1 + local.get $3 call $~lib/set/Set#has i32.eqz i32.eqz if i32.const 0 i32.const 376 - i32.const 24 + i32.const 33 i32.const 4 call $~lib/builtins/abort unreachable end - local.get $1 + local.get $3 i32.const 1 i32.add - local.set $1 - br $loop|2 + local.set $3 + br $loop|3 end unreachable end @@ -7953,70 +9613,70 @@ if i32.const 0 i32.const 376 - i32.const 26 + i32.const 35 i32.const 2 call $~lib/builtins/abort unreachable end - block $break|3 + block $break|4 i32.const 0 - local.set $1 - loop $loop|3 - local.get $1 + local.set $3 + loop $loop|4 + local.get $3 i32.const 50 i32.lt_u i32.eqz - br_if $break|3 + br_if $break|4 local.get $0 - local.get $1 + local.get $3 call $~lib/set/Set#has i32.eqz i32.eqz if i32.const 0 i32.const 376 - i32.const 30 + i32.const 39 i32.const 4 call $~lib/builtins/abort unreachable end local.get $0 - local.get $1 + local.get $3 call $~lib/set/Set#add local.get $0 - local.get $1 + local.get $3 call $~lib/set/Set#has i32.eqz if i32.const 0 i32.const 376 - i32.const 32 + i32.const 41 i32.const 4 call $~lib/builtins/abort unreachable end local.get $0 - local.get $1 + local.get $3 call $~lib/set/Set#delete drop local.get $0 - local.get $1 + local.get $3 call $~lib/set/Set#has i32.eqz i32.eqz if i32.const 0 i32.const 376 - i32.const 34 + i32.const 43 i32.const 4 call $~lib/builtins/abort unreachable end - local.get $1 + local.get $3 i32.const 1 i32.add - local.set $1 - br $loop|3 + local.set $3 + br $loop|4 end unreachable end @@ -8028,7 +9688,7 @@ if i32.const 0 i32.const 376 - i32.const 36 + i32.const 45 i32.const 2 call $~lib/builtins/abort unreachable @@ -8043,15 +9703,19 @@ if i32.const 0 i32.const 376 - i32.const 40 + i32.const 49 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $1 + call $~lib/rt/pure/__release + local.get $2 + call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/set/Set#clear (; 90 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/set/Set#clear (; 136 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 @@ -8091,12 +9755,12 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/set/Set#constructor (; 91 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/set/Set#constructor (; 137 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if i32.const 24 - i32.const 9 + i32.const 15 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain local.set $0 @@ -8123,7 +9787,7 @@ call $~lib/set/Set#clear local.get $0 ) - (func $~lib/util/hash/hash64 (; 92 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/util/hash/hash64 (; 138 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -8211,7 +9875,7 @@ local.set $3 local.get $3 ) - (func $~lib/set/Set#find (; 93 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + (func $~lib/set/Set#find (; 139 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) (local $3 i32) local.get $0 i32.load @@ -8259,7 +9923,7 @@ end i32.const 0 ) - (func $~lib/set/Set#has (; 94 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) + (func $~lib/set/Set#has (; 140 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) (local $2 i64) local.get $0 local.get $1 @@ -8274,7 +9938,7 @@ i32.const 0 i32.ne ) - (func $~lib/set/Set#rehash (; 95 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#rehash (; 141 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8428,7 +10092,7 @@ local.get $5 call $~lib/rt/pure/__release ) - (func $~lib/set/Set#add (; 96 ;) (type $FUNCSIG$vij) (param $0 i32) (param $1 i64) + (func $~lib/set/Set#add (; 142 ;) (type $FUNCSIG$vij) (param $0 i32) (param $1 i64) (local $2 i64) (local $3 i32) (local $4 i32) @@ -8520,11 +10184,172 @@ i32.store end ) - (func $~lib/set/Set#get:size (; 97 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/set/Set#get:size (; 143 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=20 + ) + (func $~lib/array/Array#constructor (; 144 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + if (result i32) + local.get $0 + else + i32.const 16 + i32.const 16 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + end + local.get $1 + i32.const 3 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.set $0 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + local.get $1 + i32.store offset=12 + local.get $0 + ) + (func $~lib/array/Array#__unchecked_set (; 145 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.get $2 + i64.store + ) + (func $~lib/array/Array#__set (; 146 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + local.get $1 + i32.const 0 + i32.lt_s + if + i32.const 280 + i32.const 416 + i32.const 109 + i32.const 21 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.const 3 + call $~lib/array/ensureSize + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.store offset=12 + end + local.get $0 + local.get $1 + local.get $2 + call $~lib/array/Array#__unchecked_set + ) + (func $~lib/set/Set#values (; 147 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + local.get $0 + i32.load offset=8 + local.set $1 + local.get $0 + i32.load offset=16 + local.set $2 + i32.const 0 + local.get $2 + call $~lib/array/Array#constructor + local.set $3 + i32.const 0 + local.set $4 + block $break|0 + i32.const 0 + local.set $5 + loop $loop|0 + local.get $5 + local.get $2 + i32.lt_s + i32.eqz + br_if $break|0 + local.get $1 + local.get $5 + i32.const 16 + i32.mul + i32.add + local.set $6 + local.get $6 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $3 + local.get $4 + local.tee $7 + i32.const 1 + i32.add + local.set $4 + local.get $7 + local.get $6 + i64.load + call $~lib/array/Array#__set + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $loop|0 + end + unreachable + end + local.get $3 + ) + (func $~lib/array/Array#get:length (; 148 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - i32.load offset=20 + i32.load offset=12 + ) + (func $~lib/array/Array#__unchecked_get (; 149 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 3 + i32.shl + i32.add + i64.load + ) + (func $~lib/array/Array#__get (; 150 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) + (local $2 i64) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 280 + i32.const 416 + i32.const 93 + i32.const 41 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/array/Array#__unchecked_get + local.set $2 + local.get $2 ) - (func $~lib/set/Set#delete (; 98 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) + (func $~lib/set/Set#delete (; 151 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) (local $2 i64) (local $3 i32) (local $4 i32) @@ -8597,9 +10422,12 @@ end i32.const 1 ) - (func $std/set/testNumeric (; 99 ;) (type $FUNCSIG$v) + (func $std/set/testNumeric (; 152 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i64) + (local $2 i32) + (local $3 i32) + (local $4 i32) i32.const 0 call $~lib/set/Set#constructor local.set $0 @@ -8718,15 +10546,72 @@ call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/set/Set#values + local.set $2 + i32.const 0 + call $~lib/set/Set#constructor + local.set $3 block $break|2 + i32.const 0 + local.set $4 + loop $loop|2 + local.get $4 + local.get $2 + call $~lib/array/Array#get:length + i32.lt_s + i32.eqz + br_if $break|2 + local.get $0 + local.get $2 + local.get $4 + call $~lib/array/Array#__get + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 24 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $2 + local.get $4 + call $~lib/array/Array#__get + call $~lib/set/Set#add + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $loop|2 + end + unreachable + end + local.get $3 + call $~lib/set/Set#get:size + local.get $0 + call $~lib/set/Set#get:size + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 27 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + block $break|3 i64.const 0 local.set $1 - loop $loop|2 + loop $loop|3 local.get $1 i64.const 50 i64.lt_s i32.eqz - br_if $break|2 + br_if $break|3 local.get $0 local.get $1 call $~lib/set/Set#has @@ -8734,7 +10619,7 @@ if i32.const 0 i32.const 376 - i32.const 22 + i32.const 31 i32.const 4 call $~lib/builtins/abort unreachable @@ -8751,7 +10636,7 @@ if i32.const 0 i32.const 376 - i32.const 24 + i32.const 33 i32.const 4 call $~lib/builtins/abort unreachable @@ -8760,7 +10645,7 @@ i64.const 1 i64.add local.set $1 - br $loop|2 + br $loop|3 end unreachable end @@ -8772,20 +10657,20 @@ if i32.const 0 i32.const 376 - i32.const 26 + i32.const 35 i32.const 2 call $~lib/builtins/abort unreachable end - block $break|3 + block $break|4 i64.const 0 local.set $1 - loop $loop|3 + loop $loop|4 local.get $1 i64.const 50 i64.lt_s i32.eqz - br_if $break|3 + br_if $break|4 local.get $0 local.get $1 call $~lib/set/Set#has @@ -8794,7 +10679,7 @@ if i32.const 0 i32.const 376 - i32.const 30 + i32.const 39 i32.const 4 call $~lib/builtins/abort unreachable @@ -8809,7 +10694,7 @@ if i32.const 0 i32.const 376 - i32.const 32 + i32.const 41 i32.const 4 call $~lib/builtins/abort unreachable @@ -8826,7 +10711,7 @@ if i32.const 0 i32.const 376 - i32.const 34 + i32.const 43 i32.const 4 call $~lib/builtins/abort unreachable @@ -8835,7 +10720,7 @@ i64.const 1 i64.add local.set $1 - br $loop|3 + br $loop|4 end unreachable end @@ -8847,7 +10732,7 @@ if i32.const 0 i32.const 376 - i32.const 36 + i32.const 45 i32.const 2 call $~lib/builtins/abort unreachable @@ -8862,15 +10747,19 @@ if i32.const 0 i32.const 376 - i32.const 40 + i32.const 49 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $2 + call $~lib/rt/pure/__release + local.get $3 + call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/set/Set#clear (; 100 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/set/Set#clear (; 153 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 @@ -8910,12 +10799,12 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/set/Set#constructor (; 101 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/set/Set#constructor (; 154 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if i32.const 24 - i32.const 10 + i32.const 17 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain local.set $0 @@ -8942,7 +10831,7 @@ call $~lib/set/Set#clear local.get $0 ) - (func $~lib/set/Set#find (; 102 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + (func $~lib/set/Set#find (; 155 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) (local $3 i32) local.get $0 i32.load @@ -8990,7 +10879,7 @@ end i32.const 0 ) - (func $~lib/set/Set#has (; 103 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) + (func $~lib/set/Set#has (; 156 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) (local $2 i64) local.get $0 local.get $1 @@ -9005,7 +10894,7 @@ i32.const 0 i32.ne ) - (func $~lib/set/Set#rehash (; 104 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#rehash (; 157 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9159,7 +11048,7 @@ local.get $5 call $~lib/rt/pure/__release ) - (func $~lib/set/Set#add (; 105 ;) (type $FUNCSIG$vij) (param $0 i32) (param $1 i64) + (func $~lib/set/Set#add (; 158 ;) (type $FUNCSIG$vij) (param $0 i32) (param $1 i64) (local $2 i64) (local $3 i32) (local $4 i32) @@ -9251,11 +11140,172 @@ i32.store end ) - (func $~lib/set/Set#get:size (; 106 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/set/Set#get:size (; 159 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=20 ) - (func $~lib/set/Set#delete (; 107 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) + (func $~lib/array/Array#constructor (; 160 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + if (result i32) + local.get $0 + else + i32.const 16 + i32.const 18 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + end + local.get $1 + i32.const 3 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.set $0 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + local.get $1 + i32.store offset=12 + local.get $0 + ) + (func $~lib/array/Array#__unchecked_set (; 161 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.get $2 + i64.store + ) + (func $~lib/array/Array#__set (; 162 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + local.get $1 + i32.const 0 + i32.lt_s + if + i32.const 280 + i32.const 416 + i32.const 109 + i32.const 21 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.const 3 + call $~lib/array/ensureSize + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.store offset=12 + end + local.get $0 + local.get $1 + local.get $2 + call $~lib/array/Array#__unchecked_set + ) + (func $~lib/set/Set#values (; 163 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + local.get $0 + i32.load offset=8 + local.set $1 + local.get $0 + i32.load offset=16 + local.set $2 + i32.const 0 + local.get $2 + call $~lib/array/Array#constructor + local.set $3 + i32.const 0 + local.set $4 + block $break|0 + i32.const 0 + local.set $5 + loop $loop|0 + local.get $5 + local.get $2 + i32.lt_s + i32.eqz + br_if $break|0 + local.get $1 + local.get $5 + i32.const 16 + i32.mul + i32.add + local.set $6 + local.get $6 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $3 + local.get $4 + local.tee $7 + i32.const 1 + i32.add + local.set $4 + local.get $7 + local.get $6 + i64.load + call $~lib/array/Array#__set + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $loop|0 + end + unreachable + end + local.get $3 + ) + (func $~lib/array/Array#get:length (; 164 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=12 + ) + (func $~lib/array/Array#__unchecked_get (; 165 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 3 + i32.shl + i32.add + i64.load + ) + (func $~lib/array/Array#__get (; 166 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) + (local $2 i64) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 280 + i32.const 416 + i32.const 93 + i32.const 41 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/array/Array#__unchecked_get + local.set $2 + local.get $2 + ) + (func $~lib/set/Set#delete (; 167 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) (local $2 i64) (local $3 i32) (local $4 i32) @@ -9328,9 +11378,12 @@ end i32.const 1 ) - (func $std/set/testNumeric (; 108 ;) (type $FUNCSIG$v) + (func $std/set/testNumeric (; 168 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i64) + (local $2 i32) + (local $3 i32) + (local $4 i32) i32.const 0 call $~lib/set/Set#constructor local.set $0 @@ -9449,15 +11502,72 @@ call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/set/Set#values + local.set $2 + i32.const 0 + call $~lib/set/Set#constructor + local.set $3 block $break|2 + i32.const 0 + local.set $4 + loop $loop|2 + local.get $4 + local.get $2 + call $~lib/array/Array#get:length + i32.lt_s + i32.eqz + br_if $break|2 + local.get $0 + local.get $2 + local.get $4 + call $~lib/array/Array#__get + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 24 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $2 + local.get $4 + call $~lib/array/Array#__get + call $~lib/set/Set#add + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $loop|2 + end + unreachable + end + local.get $3 + call $~lib/set/Set#get:size + local.get $0 + call $~lib/set/Set#get:size + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 27 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + block $break|3 i64.const 0 local.set $1 - loop $loop|2 + loop $loop|3 local.get $1 i64.const 50 i64.lt_u i32.eqz - br_if $break|2 + br_if $break|3 local.get $0 local.get $1 call $~lib/set/Set#has @@ -9465,7 +11575,7 @@ if i32.const 0 i32.const 376 - i32.const 22 + i32.const 31 i32.const 4 call $~lib/builtins/abort unreachable @@ -9482,7 +11592,7 @@ if i32.const 0 i32.const 376 - i32.const 24 + i32.const 33 i32.const 4 call $~lib/builtins/abort unreachable @@ -9491,7 +11601,7 @@ i64.const 1 i64.add local.set $1 - br $loop|2 + br $loop|3 end unreachable end @@ -9503,20 +11613,20 @@ if i32.const 0 i32.const 376 - i32.const 26 + i32.const 35 i32.const 2 call $~lib/builtins/abort unreachable end - block $break|3 + block $break|4 i64.const 0 local.set $1 - loop $loop|3 + loop $loop|4 local.get $1 i64.const 50 i64.lt_u i32.eqz - br_if $break|3 + br_if $break|4 local.get $0 local.get $1 call $~lib/set/Set#has @@ -9525,7 +11635,7 @@ if i32.const 0 i32.const 376 - i32.const 30 + i32.const 39 i32.const 4 call $~lib/builtins/abort unreachable @@ -9540,7 +11650,7 @@ if i32.const 0 i32.const 376 - i32.const 32 + i32.const 41 i32.const 4 call $~lib/builtins/abort unreachable @@ -9557,7 +11667,7 @@ if i32.const 0 i32.const 376 - i32.const 34 + i32.const 43 i32.const 4 call $~lib/builtins/abort unreachable @@ -9566,7 +11676,7 @@ i64.const 1 i64.add local.set $1 - br $loop|3 + br $loop|4 end unreachable end @@ -9578,7 +11688,7 @@ if i32.const 0 i32.const 376 - i32.const 36 + i32.const 45 i32.const 2 call $~lib/builtins/abort unreachable @@ -9593,15 +11703,19 @@ if i32.const 0 i32.const 376 - i32.const 40 + i32.const 49 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $2 + call $~lib/rt/pure/__release + local.get $3 + call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/set/Set#clear (; 109 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/set/Set#clear (; 169 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 @@ -9641,12 +11755,12 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/set/Set#constructor (; 110 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/set/Set#constructor (; 170 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if i32.const 24 - i32.const 11 + i32.const 19 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain local.set $0 @@ -9673,7 +11787,7 @@ call $~lib/set/Set#clear local.get $0 ) - (func $~lib/set/Set#find (; 111 ;) (type $FUNCSIG$iifi) (param $0 i32) (param $1 f32) (param $2 i32) (result i32) + (func $~lib/set/Set#find (; 171 ;) (type $FUNCSIG$iifi) (param $0 i32) (param $1 f32) (param $2 i32) (result i32) (local $3 i32) local.get $0 i32.load @@ -9721,7 +11835,7 @@ end i32.const 0 ) - (func $~lib/set/Set#has (; 112 ;) (type $FUNCSIG$iif) (param $0 i32) (param $1 f32) (result i32) + (func $~lib/set/Set#has (; 172 ;) (type $FUNCSIG$iif) (param $0 i32) (param $1 f32) (result i32) (local $2 f32) local.get $0 local.get $1 @@ -9737,7 +11851,7 @@ i32.const 0 i32.ne ) - (func $~lib/set/Set#rehash (; 113 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#rehash (; 173 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9892,7 +12006,7 @@ local.get $5 call $~lib/rt/pure/__release ) - (func $~lib/set/Set#add (; 114 ;) (type $FUNCSIG$vif) (param $0 i32) (param $1 f32) + (func $~lib/set/Set#add (; 174 ;) (type $FUNCSIG$vif) (param $0 i32) (param $1 f32) (local $2 f32) (local $3 i32) (local $4 i32) @@ -9985,11 +12099,172 @@ i32.store end ) - (func $~lib/set/Set#get:size (; 115 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/set/Set#get:size (; 175 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=20 ) - (func $~lib/set/Set#delete (; 116 ;) (type $FUNCSIG$iif) (param $0 i32) (param $1 f32) (result i32) + (func $~lib/array/Array#constructor (; 176 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + if (result i32) + local.get $0 + else + i32.const 16 + i32.const 20 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + end + local.get $1 + i32.const 2 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.set $0 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + local.get $1 + i32.store offset=12 + local.get $0 + ) + (func $~lib/array/Array#__unchecked_set (; 177 ;) (type $FUNCSIG$viif) (param $0 i32) (param $1 i32) (param $2 f32) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $2 + f32.store + ) + (func $~lib/array/Array#__set (; 178 ;) (type $FUNCSIG$viif) (param $0 i32) (param $1 i32) (param $2 f32) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + local.get $1 + i32.const 0 + i32.lt_s + if + i32.const 280 + i32.const 416 + i32.const 109 + i32.const 21 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.const 2 + call $~lib/array/ensureSize + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.store offset=12 + end + local.get $0 + local.get $1 + local.get $2 + call $~lib/array/Array#__unchecked_set + ) + (func $~lib/set/Set#values (; 179 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + local.get $0 + i32.load offset=8 + local.set $1 + local.get $0 + i32.load offset=16 + local.set $2 + i32.const 0 + local.get $2 + call $~lib/array/Array#constructor + local.set $3 + i32.const 0 + local.set $4 + block $break|0 + i32.const 0 + local.set $5 + loop $loop|0 + local.get $5 + local.get $2 + i32.lt_s + i32.eqz + br_if $break|0 + local.get $1 + local.get $5 + i32.const 8 + i32.mul + i32.add + local.set $6 + local.get $6 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz + if + local.get $3 + local.get $4 + local.tee $7 + i32.const 1 + i32.add + local.set $4 + local.get $7 + local.get $6 + f32.load + call $~lib/array/Array#__set + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $loop|0 + end + unreachable + end + local.get $3 + ) + (func $~lib/array/Array#get:length (; 180 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=12 + ) + (func $~lib/array/Array#__unchecked_get (; 181 ;) (type $FUNCSIG$fii) (param $0 i32) (param $1 i32) (result f32) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + f32.load + ) + (func $~lib/array/Array#__get (; 182 ;) (type $FUNCSIG$fii) (param $0 i32) (param $1 i32) (result f32) + (local $2 f32) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 280 + i32.const 416 + i32.const 93 + i32.const 41 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/array/Array#__unchecked_get + local.set $2 + local.get $2 + ) + (func $~lib/set/Set#delete (; 183 ;) (type $FUNCSIG$iif) (param $0 i32) (param $1 f32) (result i32) (local $2 f32) (local $3 i32) (local $4 i32) @@ -10063,9 +12338,12 @@ end i32.const 1 ) - (func $std/set/testNumeric (; 117 ;) (type $FUNCSIG$v) + (func $std/set/testNumeric (; 184 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 f32) + (local $2 i32) + (local $3 i32) + (local $4 i32) i32.const 0 call $~lib/set/Set#constructor local.set $0 @@ -10173,26 +12451,83 @@ end local.get $0 call $~lib/set/Set#get:size - i32.const 100 + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 18 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/set/Set#values + local.set $2 + i32.const 0 + call $~lib/set/Set#constructor + local.set $3 + block $break|2 + i32.const 0 + local.set $4 + loop $loop|2 + local.get $4 + local.get $2 + call $~lib/array/Array#get:length + i32.lt_s + i32.eqz + br_if $break|2 + local.get $0 + local.get $2 + local.get $4 + call $~lib/array/Array#__get + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 24 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $2 + local.get $4 + call $~lib/array/Array#__get + call $~lib/set/Set#add + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $loop|2 + end + unreachable + end + local.get $3 + call $~lib/set/Set#get:size + local.get $0 + call $~lib/set/Set#get:size i32.eq i32.eqz if i32.const 0 i32.const 376 - i32.const 18 + i32.const 27 i32.const 2 call $~lib/builtins/abort unreachable end - block $break|2 + block $break|3 f32.const 0 local.set $1 - loop $loop|2 + loop $loop|3 local.get $1 f32.const 50 f32.lt i32.eqz - br_if $break|2 + br_if $break|3 local.get $0 local.get $1 call $~lib/set/Set#has @@ -10200,7 +12535,7 @@ if i32.const 0 i32.const 376 - i32.const 22 + i32.const 31 i32.const 4 call $~lib/builtins/abort unreachable @@ -10217,7 +12552,7 @@ if i32.const 0 i32.const 376 - i32.const 24 + i32.const 33 i32.const 4 call $~lib/builtins/abort unreachable @@ -10226,7 +12561,7 @@ f32.const 1 f32.add local.set $1 - br $loop|2 + br $loop|3 end unreachable end @@ -10238,20 +12573,20 @@ if i32.const 0 i32.const 376 - i32.const 26 + i32.const 35 i32.const 2 call $~lib/builtins/abort unreachable end - block $break|3 + block $break|4 f32.const 0 local.set $1 - loop $loop|3 + loop $loop|4 local.get $1 f32.const 50 f32.lt i32.eqz - br_if $break|3 + br_if $break|4 local.get $0 local.get $1 call $~lib/set/Set#has @@ -10260,7 +12595,7 @@ if i32.const 0 i32.const 376 - i32.const 30 + i32.const 39 i32.const 4 call $~lib/builtins/abort unreachable @@ -10275,7 +12610,7 @@ if i32.const 0 i32.const 376 - i32.const 32 + i32.const 41 i32.const 4 call $~lib/builtins/abort unreachable @@ -10292,7 +12627,7 @@ if i32.const 0 i32.const 376 - i32.const 34 + i32.const 43 i32.const 4 call $~lib/builtins/abort unreachable @@ -10301,7 +12636,7 @@ f32.const 1 f32.add local.set $1 - br $loop|3 + br $loop|4 end unreachable end @@ -10313,7 +12648,7 @@ if i32.const 0 i32.const 376 - i32.const 36 + i32.const 45 i32.const 2 call $~lib/builtins/abort unreachable @@ -10328,15 +12663,19 @@ if i32.const 0 i32.const 376 - i32.const 40 + i32.const 49 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $2 + call $~lib/rt/pure/__release + local.get $3 + call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/set/Set#clear (; 118 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/set/Set#clear (; 185 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 @@ -10376,12 +12715,12 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/set/Set#constructor (; 119 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/set/Set#constructor (; 186 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if i32.const 24 - i32.const 12 + i32.const 21 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain local.set $0 @@ -10408,7 +12747,7 @@ call $~lib/set/Set#clear local.get $0 ) - (func $~lib/set/Set#find (; 120 ;) (type $FUNCSIG$iidi) (param $0 i32) (param $1 f64) (param $2 i32) (result i32) + (func $~lib/set/Set#find (; 187 ;) (type $FUNCSIG$iidi) (param $0 i32) (param $1 f64) (param $2 i32) (result i32) (local $3 i32) local.get $0 i32.load @@ -10456,7 +12795,7 @@ end i32.const 0 ) - (func $~lib/set/Set#has (; 121 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) + (func $~lib/set/Set#has (; 188 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) (local $2 f64) local.get $0 local.get $1 @@ -10472,7 +12811,7 @@ i32.const 0 i32.ne ) - (func $~lib/set/Set#rehash (; 122 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#rehash (; 189 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -10627,7 +12966,7 @@ local.get $5 call $~lib/rt/pure/__release ) - (func $~lib/set/Set#add (; 123 ;) (type $FUNCSIG$vid) (param $0 i32) (param $1 f64) + (func $~lib/set/Set#add (; 190 ;) (type $FUNCSIG$vid) (param $0 i32) (param $1 f64) (local $2 f64) (local $3 i32) (local $4 i32) @@ -10720,11 +13059,172 @@ i32.store end ) - (func $~lib/set/Set#get:size (; 124 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/set/Set#get:size (; 191 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=20 ) - (func $~lib/set/Set#delete (; 125 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) + (func $~lib/array/Array#constructor (; 192 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + if (result i32) + local.get $0 + else + i32.const 16 + i32.const 22 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + end + local.get $1 + i32.const 3 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.set $0 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + local.get $1 + i32.store offset=12 + local.get $0 + ) + (func $~lib/array/Array#__unchecked_set (; 193 ;) (type $FUNCSIG$viid) (param $0 i32) (param $1 i32) (param $2 f64) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.get $2 + f64.store + ) + (func $~lib/array/Array#__set (; 194 ;) (type $FUNCSIG$viid) (param $0 i32) (param $1 i32) (param $2 f64) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + local.get $1 + i32.const 0 + i32.lt_s + if + i32.const 280 + i32.const 416 + i32.const 109 + i32.const 21 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.const 3 + call $~lib/array/ensureSize + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.store offset=12 + end + local.get $0 + local.get $1 + local.get $2 + call $~lib/array/Array#__unchecked_set + ) + (func $~lib/set/Set#values (; 195 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + local.get $0 + i32.load offset=8 + local.set $1 + local.get $0 + i32.load offset=16 + local.set $2 + i32.const 0 + local.get $2 + call $~lib/array/Array#constructor + local.set $3 + i32.const 0 + local.set $4 + block $break|0 + i32.const 0 + local.set $5 + loop $loop|0 + local.get $5 + local.get $2 + i32.lt_s + i32.eqz + br_if $break|0 + local.get $1 + local.get $5 + i32.const 16 + i32.mul + i32.add + local.set $6 + local.get $6 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $3 + local.get $4 + local.tee $7 + i32.const 1 + i32.add + local.set $4 + local.get $7 + local.get $6 + f64.load + call $~lib/array/Array#__set + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $loop|0 + end + unreachable + end + local.get $3 + ) + (func $~lib/array/Array#get:length (; 196 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=12 + ) + (func $~lib/array/Array#__unchecked_get (; 197 ;) (type $FUNCSIG$dii) (param $0 i32) (param $1 i32) (result f64) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 3 + i32.shl + i32.add + f64.load + ) + (func $~lib/array/Array#__get (; 198 ;) (type $FUNCSIG$dii) (param $0 i32) (param $1 i32) (result f64) + (local $2 f64) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 280 + i32.const 416 + i32.const 93 + i32.const 41 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/array/Array#__unchecked_get + local.set $2 + local.get $2 + ) + (func $~lib/set/Set#delete (; 199 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) (local $2 f64) (local $3 i32) (local $4 i32) @@ -10798,9 +13298,12 @@ end i32.const 1 ) - (func $std/set/testNumeric (; 126 ;) (type $FUNCSIG$v) + (func $std/set/testNumeric (; 200 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 f64) + (local $2 i32) + (local $3 i32) + (local $4 i32) i32.const 0 call $~lib/set/Set#constructor local.set $0 @@ -10919,15 +13422,72 @@ call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/set/Set#values + local.set $2 + i32.const 0 + call $~lib/set/Set#constructor + local.set $3 block $break|2 + i32.const 0 + local.set $4 + loop $loop|2 + local.get $4 + local.get $2 + call $~lib/array/Array#get:length + i32.lt_s + i32.eqz + br_if $break|2 + local.get $0 + local.get $2 + local.get $4 + call $~lib/array/Array#__get + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 24 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $2 + local.get $4 + call $~lib/array/Array#__get + call $~lib/set/Set#add + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $loop|2 + end + unreachable + end + local.get $3 + call $~lib/set/Set#get:size + local.get $0 + call $~lib/set/Set#get:size + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 27 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + block $break|3 f64.const 0 local.set $1 - loop $loop|2 + loop $loop|3 local.get $1 f64.const 50 f64.lt i32.eqz - br_if $break|2 + br_if $break|3 local.get $0 local.get $1 call $~lib/set/Set#has @@ -10935,7 +13495,7 @@ if i32.const 0 i32.const 376 - i32.const 22 + i32.const 31 i32.const 4 call $~lib/builtins/abort unreachable @@ -10952,7 +13512,7 @@ if i32.const 0 i32.const 376 - i32.const 24 + i32.const 33 i32.const 4 call $~lib/builtins/abort unreachable @@ -10961,7 +13521,7 @@ f64.const 1 f64.add local.set $1 - br $loop|2 + br $loop|3 end unreachable end @@ -10973,20 +13533,20 @@ if i32.const 0 i32.const 376 - i32.const 26 + i32.const 35 i32.const 2 call $~lib/builtins/abort unreachable end - block $break|3 + block $break|4 f64.const 0 local.set $1 - loop $loop|3 + loop $loop|4 local.get $1 f64.const 50 f64.lt i32.eqz - br_if $break|3 + br_if $break|4 local.get $0 local.get $1 call $~lib/set/Set#has @@ -10995,7 +13555,7 @@ if i32.const 0 i32.const 376 - i32.const 30 + i32.const 39 i32.const 4 call $~lib/builtins/abort unreachable @@ -11010,7 +13570,7 @@ if i32.const 0 i32.const 376 - i32.const 32 + i32.const 41 i32.const 4 call $~lib/builtins/abort unreachable @@ -11027,7 +13587,7 @@ if i32.const 0 i32.const 376 - i32.const 34 + i32.const 43 i32.const 4 call $~lib/builtins/abort unreachable @@ -11036,7 +13596,7 @@ f64.const 1 f64.add local.set $1 - br $loop|3 + br $loop|4 end unreachable end @@ -11048,7 +13608,7 @@ if i32.const 0 i32.const 376 - i32.const 36 + i32.const 45 i32.const 2 call $~lib/builtins/abort unreachable @@ -11063,15 +13623,19 @@ if i32.const 0 i32.const 376 - i32.const 40 + i32.const 49 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $2 + call $~lib/rt/pure/__release + local.get $3 + call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release ) - (func $start:std/set (; 127 ;) (type $FUNCSIG$v) + (func $start:std/set (; 201 ;) (type $FUNCSIG$v) call $std/set/testNumeric call $std/set/testNumeric call $std/set/testNumeric @@ -11083,10 +13647,10 @@ call $std/set/testNumeric call $std/set/testNumeric ) - (func $start (; 128 ;) (type $FUNCSIG$v) + (func $start (; 202 ;) (type $FUNCSIG$v) call $start:std/set ) - (func $~lib/rt/pure/__visit (; 129 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/pure/__visit (; 203 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) local.get $0 @@ -11216,7 +13780,7 @@ end end ) - (func $~lib/set/Set#__visit_impl (; 130 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#__visit_impl (; 204 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 i32.load @@ -11229,7 +13793,10 @@ local.get $1 call $~lib/rt/pure/__visit ) - (func $~lib/set/Set#__visit_impl (; 131 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#__visit_impl (; 205 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + nop + ) + (func $~lib/set/Set#__visit_impl (; 206 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 i32.load @@ -11242,7 +13809,10 @@ local.get $1 call $~lib/rt/pure/__visit ) - (func $~lib/set/Set#__visit_impl (; 132 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#__visit_impl (; 207 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + nop + ) + (func $~lib/set/Set#__visit_impl (; 208 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 i32.load @@ -11255,7 +13825,10 @@ local.get $1 call $~lib/rt/pure/__visit ) - (func $~lib/set/Set#__visit_impl (; 133 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#__visit_impl (; 209 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + nop + ) + (func $~lib/set/Set#__visit_impl (; 210 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 i32.load @@ -11268,7 +13841,10 @@ local.get $1 call $~lib/rt/pure/__visit ) - (func $~lib/set/Set#__visit_impl (; 134 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#__visit_impl (; 211 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + nop + ) + (func $~lib/set/Set#__visit_impl (; 212 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 i32.load @@ -11281,7 +13857,10 @@ local.get $1 call $~lib/rt/pure/__visit ) - (func $~lib/set/Set#__visit_impl (; 135 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#__visit_impl (; 213 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + nop + ) + (func $~lib/set/Set#__visit_impl (; 214 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 i32.load @@ -11294,7 +13873,10 @@ local.get $1 call $~lib/rt/pure/__visit ) - (func $~lib/set/Set#__visit_impl (; 136 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#__visit_impl (; 215 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + nop + ) + (func $~lib/set/Set#__visit_impl (; 216 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 i32.load @@ -11307,7 +13889,10 @@ local.get $1 call $~lib/rt/pure/__visit ) - (func $~lib/set/Set#__visit_impl (; 137 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#__visit_impl (; 217 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + nop + ) + (func $~lib/set/Set#__visit_impl (; 218 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 i32.load @@ -11320,7 +13905,10 @@ local.get $1 call $~lib/rt/pure/__visit ) - (func $~lib/set/Set#__visit_impl (; 138 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#__visit_impl (; 219 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + nop + ) + (func $~lib/set/Set#__visit_impl (; 220 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 i32.load @@ -11333,7 +13921,10 @@ local.get $1 call $~lib/rt/pure/__visit ) - (func $~lib/set/Set#__visit_impl (; 139 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#__visit_impl (; 221 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + nop + ) + (func $~lib/set/Set#__visit_impl (; 222 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 i32.load @@ -11346,92 +13937,158 @@ local.get $1 call $~lib/rt/pure/__visit ) - (func $~lib/rt/__visit_members (; 140 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#__visit_impl (; 223 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + nop + ) + (func $~lib/rt/__visit_members (; 224 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) - block $switch$1$default - block $switch$1$case$14 - block $switch$1$case$13 - block $switch$1$case$12 - block $switch$1$case$11 - block $switch$1$case$10 - block $switch$1$case$9 - block $switch$1$case$8 - block $switch$1$case$7 - block $switch$1$case$6 - block $switch$1$case$5 - block $switch$1$case$4 - block $switch$1$case$2 + block $block$4$break + block $switch$1$default + block $switch$1$case$24 + block $switch$1$case$23 + block $switch$1$case$22 + block $switch$1$case$21 + block $switch$1$case$20 + block $switch$1$case$19 + block $switch$1$case$18 + block $switch$1$case$17 + block $switch$1$case$16 + block $switch$1$case$15 + block $switch$1$case$14 + block $switch$1$case$13 + block $switch$1$case$12 + block $switch$1$case$11 + block $switch$1$case$10 + block $switch$1$case$9 + block $switch$1$case$8 + block $switch$1$case$7 + block $switch$1$case$6 + block $switch$1$case$5 + block $switch$1$case$4 + block $switch$1$case$2 + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$case$5 $switch$1$case$6 $switch$1$case$7 $switch$1$case$8 $switch$1$case$9 $switch$1$case$10 $switch$1$case$11 $switch$1$case$12 $switch$1$case$13 $switch$1$case$14 $switch$1$case$15 $switch$1$case$16 $switch$1$case$17 $switch$1$case$18 $switch$1$case$19 $switch$1$case$20 $switch$1$case$21 $switch$1$case$22 $switch$1$case$23 $switch$1$case$24 $switch$1$default + end + return + end + br $block$4$break + end + local.get $0 + local.get $1 + call $~lib/set/Set#__visit_impl + return + end + local.get $0 + local.get $1 + call $~lib/array/Array#__visit_impl + br $block$4$break + end + local.get $0 + local.get $1 + call $~lib/set/Set#__visit_impl + return + end + local.get $0 + local.get $1 + call $~lib/array/Array#__visit_impl + br $block$4$break + end + local.get $0 + local.get $1 + call $~lib/set/Set#__visit_impl + return + end + local.get $0 + local.get $1 + call $~lib/array/Array#__visit_impl + br $block$4$break + end + local.get $0 + local.get $1 + call $~lib/set/Set#__visit_impl + return + end + local.get $0 + local.get $1 + call $~lib/array/Array#__visit_impl + br $block$4$break + end local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$case$5 $switch$1$case$6 $switch$1$case$7 $switch$1$case$8 $switch$1$case$9 $switch$1$case$10 $switch$1$case$11 $switch$1$case$12 $switch$1$case$13 $switch$1$case$14 $switch$1$default + local.get $1 + call $~lib/set/Set#__visit_impl + return end - return - end - local.get $0 - i32.load - local.tee $2 - if - local.get $2 + local.get $0 local.get $1 - call $~lib/rt/pure/__visit + call $~lib/array/Array#__visit_impl + br $block$4$break end + local.get $0 + local.get $1 + call $~lib/set/Set#__visit_impl return end local.get $0 local.get $1 - call $~lib/set/Set#__visit_impl - return + call $~lib/array/Array#__visit_impl + br $block$4$break end local.get $0 local.get $1 - call $~lib/set/Set#__visit_impl + call $~lib/set/Set#__visit_impl return end local.get $0 local.get $1 - call $~lib/set/Set#__visit_impl - return + call $~lib/array/Array#__visit_impl + br $block$4$break end local.get $0 local.get $1 - call $~lib/set/Set#__visit_impl + call $~lib/set/Set#__visit_impl return end local.get $0 local.get $1 - call $~lib/set/Set#__visit_impl - return + call $~lib/array/Array#__visit_impl + br $block$4$break end local.get $0 local.get $1 - call $~lib/set/Set#__visit_impl + call $~lib/set/Set#__visit_impl return end local.get $0 local.get $1 - call $~lib/set/Set#__visit_impl - return + call $~lib/array/Array#__visit_impl + br $block$4$break end local.get $0 local.get $1 - call $~lib/set/Set#__visit_impl + call $~lib/set/Set#__visit_impl return end local.get $0 local.get $1 - call $~lib/set/Set#__visit_impl - return + call $~lib/array/Array#__visit_impl + br $block$4$break end - local.get $0 + unreachable + end + local.get $0 + i32.load + local.tee $2 + if + local.get $2 local.get $1 - call $~lib/set/Set#__visit_impl - return + call $~lib/rt/pure/__visit end - unreachable + return ) - (func $null (; 141 ;) (type $FUNCSIG$v) + (func $null (; 225 ;) (type $FUNCSIG$v) unreachable ) )