diff --git a/cli/asc.json b/cli/asc.json index 2997f65600..6e97f32ff3 100644 --- a/cli/asc.json +++ b/cli/asc.json @@ -209,7 +209,6 @@ "description": [ "Enables WebAssembly features being disabled by default.", "", - " sign-extension Sign-extension operations", " nontrapping-f2i Non-trapping float to integer ops.", " bulk-memory Bulk memory operations.", " simd SIMD types and operations.", @@ -233,6 +232,7 @@ "Disables WebAssembly features being enabled by default.", "", " mutable-globals Mutable global imports and exports.", + " sign-extension Sign-extension operations", "" ], "type": "S", @@ -376,7 +376,6 @@ " ...": { "description": "Specifies node.js options (CLI only). See: node --help" }, - "-Os": { "value": { "optimizeLevel": 0, "shrinkLevel": 1 } }, "-Oz": { "value": { "optimizeLevel": 0, "shrinkLevel": 2 } }, "-O0": { "value": { "optimizeLevel": 0, "shrinkLevel": 0 } }, diff --git a/src/compiler.ts b/src/compiler.ts index 96de35973e..6d113817d3 100644 --- a/src/compiler.ts +++ b/src/compiler.ts @@ -240,7 +240,7 @@ export class Options { /** Global aliases, mapping alias names as the key to internal names to be aliased as the value. */ globalAliases: Map | null = null; /** Features to activate by default. These are the finished proposals. */ - features: Feature = Feature.MUTABLE_GLOBALS; + features: Feature = Feature.MUTABLE_GLOBALS | Feature.SIGN_EXTENSION; /** If true, disallows unsafe features in user code. */ noUnsafe: bool = false; /** If true, enables pedantic diagnostics. */ diff --git a/tests/compiler/abi.untouched.wat b/tests/compiler/abi.untouched.wat index 5fe9545b1c..06e2ca21e8 100644 --- a/tests/compiler/abi.untouched.wat +++ b/tests/compiler/abi.untouched.wat @@ -31,10 +31,7 @@ i32.const 256 local.set $0 local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.eqz i32.eqz if @@ -50,28 +47,19 @@ global.get $abi/condition if local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const 2 i32.div_s local.set $0 else local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const 2 i32.div_s local.set $0 end local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.eqz i32.eqz if @@ -87,10 +75,7 @@ global.get $abi/condition if local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const 24 i32.const 7 i32.and @@ -103,6 +88,7 @@ local.set $0 end local.get $0 + i32.extend8_s i32.eqz i32.eqz if @@ -114,10 +100,7 @@ unreachable end i32.const 256 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s global.set $abi/y global.get $abi/y i32.eqz @@ -189,20 +172,15 @@ ) (func $abi/exported (result i32) i32.const 128 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s ) (func $abi/exportedExported (result i32) call $abi/exported + i32.extend8_s ) (func $abi/exportedInternal (result i32) call $abi/internal - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s ) (func $~start call $start:abi diff --git a/tests/compiler/asc-constants.untouched.wat b/tests/compiler/asc-constants.untouched.wat index c5c864dad8..0fc4903e56 100644 --- a/tests/compiler/asc-constants.untouched.wat +++ b/tests/compiler/asc-constants.untouched.wat @@ -5,7 +5,7 @@ (global $~lib/ASC_MEMORY_BASE i32 (i32.const 0)) (global $~lib/ASC_OPTIMIZE_LEVEL i32 (i32.const 0)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $~lib/ASC_FEATURE_SIGN_EXTENSION i32 (i32.const 0)) + (global $~lib/ASC_FEATURE_SIGN_EXTENSION i32 (i32.const 1)) (global $~lib/ASC_FEATURE_MUTABLE_GLOBALS i32 (i32.const 1)) (global $~lib/ASC_FEATURE_NONTRAPPING_F2I i32 (i32.const 0)) (global $~lib/ASC_FEATURE_BULK_MEMORY i32 (i32.const 0)) @@ -36,7 +36,7 @@ drop i32.const 0 drop - i32.const 0 + i32.const 1 drop i32.const 1 drop diff --git a/tests/compiler/builtins.untouched.wat b/tests/compiler/builtins.untouched.wat index 41be717f90..80f25dedf6 100644 --- a/tests/compiler/builtins.untouched.wat +++ b/tests/compiler/builtins.untouched.wat @@ -333,16 +333,10 @@ (local $4 i32) (local $5 i32) local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s local.tee $5 local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s local.tee $3 local.get $2 local.tee $4 @@ -369,26 +363,17 @@ i32.and i32.shr_u i32.or - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s ) (func $builtins/rotr3 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s local.tee $5 local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s local.tee $3 local.get $2 local.tee $4 @@ -415,10 +400,7 @@ i32.and i32.shl i32.or - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s ) (func $builtins/test nop @@ -556,10 +538,7 @@ i32.const 1 i32.const 2 i32.add - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s global.set $builtins/l global.get $builtins/l i32.const 3 @@ -576,10 +555,7 @@ i32.const 2 i32.const 1 i32.sub - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s global.set $builtins/l global.get $builtins/l i32.const 1 @@ -612,10 +588,7 @@ i32.const 6 i32.const 2 i32.div_s - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s global.set $builtins/l global.get $builtins/l i32.const 3 @@ -2058,10 +2031,7 @@ drop global.get $~lib/builtins/i8.MIN_VALUE i32.const 128 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.eq drop global.get $~lib/builtins/i8.MAX_VALUE @@ -2070,10 +2040,7 @@ drop global.get $~lib/builtins/i16.MIN_VALUE i32.const 32768 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.eq drop global.get $~lib/builtins/i16.MAX_VALUE diff --git a/tests/compiler/features/simd.untouched.wat b/tests/compiler/features/simd.untouched.wat index cd31cbe413..fd46daeb69 100644 --- a/tests/compiler/features/simd.untouched.wat +++ b/tests/compiler/features/simd.untouched.wat @@ -1817,10 +1817,7 @@ end local.get $2 i8x16.extract_lane_s 0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const 2 i32.eq i32.eqz @@ -1834,10 +1831,7 @@ end local.get $2 i8x16.extract_lane_s 15 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const -128 i32.eq i32.eqz @@ -2416,10 +2410,7 @@ end local.get $2 i16x8.extract_lane_s 0 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const 2 i32.eq i32.eqz @@ -2433,10 +2424,7 @@ end local.get $2 i16x8.extract_lane_s 7 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const -32768 i32.eq i32.eqz diff --git a/tests/compiler/many-locals.optimized.wat b/tests/compiler/many-locals.optimized.wat index 814d3325d7..680aa964bc 100644 --- a/tests/compiler/many-locals.optimized.wat +++ b/tests/compiler/many-locals.optimized.wat @@ -11,9 +11,6 @@ ) (func $many-locals/testI8 (param $0 i32) (result i32) local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s ) ) diff --git a/tests/compiler/many-locals.untouched.wat b/tests/compiler/many-locals.untouched.wat index e5c264cf84..8a263436ce 100644 --- a/tests/compiler/many-locals.untouched.wat +++ b/tests/compiler/many-locals.untouched.wat @@ -787,10 +787,7 @@ local.get $127 local.set $128 local.get $128 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s ) (func $start:many-locals i32.const 42 @@ -808,6 +805,7 @@ end i32.const 42 call $many-locals/testI8 + i32.extend8_s i32.const 42 i32.eq i32.eqz diff --git a/tests/compiler/overflow.untouched.wat b/tests/compiler/overflow.untouched.wat index 7180ccb032..66b4056373 100644 --- a/tests/compiler/overflow.untouched.wat +++ b/tests/compiler/overflow.untouched.wat @@ -22,10 +22,7 @@ i32.add local.set $0 local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const -128 i32.eq i32.eqz @@ -42,10 +39,7 @@ i32.sub local.set $0 local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const 127 i32.eq i32.eqz @@ -65,10 +59,7 @@ local.get $2 local.set $1 local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const -128 i32.eq i32.eqz @@ -88,10 +79,7 @@ local.get $2 local.set $1 local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const 127 i32.eq i32.eqz @@ -108,10 +96,7 @@ i32.add local.set $0 local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const -128 i32.eq i32.eqz @@ -128,10 +113,7 @@ i32.sub local.set $0 local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const 127 i32.eq i32.eqz @@ -149,10 +131,7 @@ local.tee $0 local.set $1 local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const -128 i32.eq i32.eqz @@ -170,10 +149,7 @@ local.tee $0 local.set $1 local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const 127 i32.eq i32.eqz @@ -188,10 +164,7 @@ local.get $0 i32.const 1 i32.add - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const -128 i32.eq i32.eqz @@ -210,10 +183,7 @@ i32.add local.set $1 local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const -32768 i32.eq i32.eqz @@ -230,10 +200,7 @@ i32.sub local.set $1 local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const 32767 i32.eq i32.eqz @@ -253,10 +220,7 @@ local.get $2 local.set $0 local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const -32768 i32.eq i32.eqz @@ -276,10 +240,7 @@ local.get $2 local.set $0 local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const 32767 i32.eq i32.eqz @@ -296,10 +257,7 @@ i32.add local.set $1 local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const -32768 i32.eq i32.eqz @@ -316,10 +274,7 @@ i32.sub local.set $1 local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const 32767 i32.eq i32.eqz @@ -337,10 +292,7 @@ local.tee $1 local.set $0 local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const -32768 i32.eq i32.eqz @@ -358,10 +310,7 @@ local.tee $1 local.set $0 local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const 32767 i32.eq i32.eqz @@ -376,10 +325,7 @@ local.get $1 i32.const 1 i32.add - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const -32768 i32.eq i32.eqz diff --git a/tests/compiler/portable-conversions.untouched.wat b/tests/compiler/portable-conversions.untouched.wat index 0d78f1d9fb..fda49f783b 100644 --- a/tests/compiler/portable-conversions.untouched.wat +++ b/tests/compiler/portable-conversions.untouched.wat @@ -17,10 +17,7 @@ (start $~start) (func $start:portable-conversions global.get $portable-conversions/i - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.eqz if i32.const 0 @@ -32,10 +29,7 @@ end global.get $portable-conversions/I i32.wrap_i64 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.eqz if i32.const 0 @@ -47,10 +41,7 @@ end global.get $portable-conversions/f i32.trunc_f32_s - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.eqz if i32.const 0 @@ -62,10 +53,7 @@ end global.get $portable-conversions/F i32.trunc_f64_s - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.eqz if i32.const 0 @@ -76,10 +64,7 @@ unreachable end global.get $portable-conversions/i - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.eqz if i32.const 0 @@ -91,10 +76,7 @@ end global.get $portable-conversions/I i32.wrap_i64 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.eqz if i32.const 0 @@ -106,10 +88,7 @@ end global.get $portable-conversions/f i32.trunc_f32_s - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.eqz if i32.const 0 @@ -121,10 +100,7 @@ end global.get $portable-conversions/F i32.trunc_f64_s - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.eqz if i32.const 0 diff --git a/tests/compiler/retain-i32.untouched.wat b/tests/compiler/retain-i32.untouched.wat index bcbfef5432..9e07d285b9 100644 --- a/tests/compiler/retain-i32.untouched.wat +++ b/tests/compiler/retain-i32.untouched.wat @@ -28,17 +28,11 @@ local.get $0 local.get $1 i32.add - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s local.get $0 local.get $1 i32.add - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.eq i32.eqz if @@ -52,17 +46,11 @@ local.get $0 local.get $1 i32.sub - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s local.get $0 local.get $1 i32.sub - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.eq i32.eqz if @@ -76,17 +64,11 @@ local.get $0 local.get $1 i32.mul - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s local.get $0 local.get $1 i32.mul - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.eq i32.eqz if @@ -100,17 +82,11 @@ local.get $0 local.get $1 i32.and - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s local.get $0 local.get $1 i32.and - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.eq i32.eqz if @@ -124,17 +100,11 @@ local.get $0 local.get $1 i32.or - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s local.get $0 local.get $1 i32.or - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.eq i32.eqz if @@ -148,17 +118,11 @@ local.get $0 local.get $1 i32.xor - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s local.get $0 local.get $1 i32.xor - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.eq i32.eqz if @@ -174,19 +138,13 @@ i32.const 7 i32.and i32.shl - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s local.get $0 local.get $1 i32.const 7 i32.and i32.shl - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.eq i32.eqz if @@ -479,10 +437,7 @@ i32.add i32.const 1 i32.add - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s global.set $retain-i32/si global.get $retain-i32/si i32.const -1 @@ -501,10 +456,7 @@ i32.sub i32.const 127 i32.sub - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s global.set $retain-i32/si global.get $retain-i32/si i32.const -1 @@ -521,10 +473,7 @@ i32.const 127 i32.const 2 i32.mul - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s global.set $retain-i32/si global.get $retain-i32/si i32.const -2 @@ -541,10 +490,7 @@ i32.const 0 i32.const -128 i32.sub - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s global.set $retain-i32/si global.get $retain-i32/si i32.const -128 @@ -561,10 +507,7 @@ i32.const -128 i32.const -1 i32.mul - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s global.set $retain-i32/si global.get $retain-i32/si i32.const -128 @@ -581,10 +524,7 @@ i32.const 127 i32.const -1 i32.div_s - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s global.set $retain-i32/si global.get $retain-i32/si i32.const -127 @@ -601,10 +541,7 @@ i32.const -128 i32.const -1 i32.div_s - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s global.set $retain-i32/si global.get $retain-i32/si i32.const -128 diff --git a/tests/compiler/std/array.optimized.wat b/tests/compiler/std/array.optimized.wat index a6fa3002aa..f9716db932 100644 --- a/tests/compiler/std/array.optimized.wat +++ b/tests/compiler/std/array.optimized.wat @@ -8343,10 +8343,7 @@ (local $2 i32) (local $3 i32) local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const 0 i32.lt_s local.tee $2 @@ -8360,10 +8357,7 @@ local.set $1 end local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const 10 i32.lt_u if @@ -8373,10 +8367,7 @@ i32.shl i32.add local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const 48 i32.or i32.store16 @@ -8386,10 +8377,7 @@ return end local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s local.tee $3 local.tee $1 i32.const 100000 diff --git a/tests/compiler/std/array.untouched.wat b/tests/compiler/std/array.untouched.wat index 8c70a361df..4517210ada 100644 --- a/tests/compiler/std/array.untouched.wat +++ b/tests/compiler/std/array.untouched.wat @@ -12002,10 +12002,7 @@ i32.const 1 drop local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const 0 i32.lt_s local.set $2 @@ -12030,10 +12027,7 @@ i32.le_u drop local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const 10 i32.lt_u if @@ -12043,10 +12037,7 @@ i32.shl i32.add local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const 48 i32.or i32.store16 @@ -12063,20 +12054,14 @@ drop local.get $3 local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s call $~lib/util/number/decimalCount32 i32.add local.set $3 local.get $0 local.set $6 local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s local.set $5 local.get $3 local.set $4 diff --git a/tests/compiler/std/dataview.optimized.wat b/tests/compiler/std/dataview.optimized.wat index ba303662a9..22ff198433 100644 --- a/tests/compiler/std/dataview.optimized.wat +++ b/tests/compiler/std/dataview.optimized.wat @@ -3012,9 +3012,8 @@ i32.const 0 i32.const 1 call $~lib/dataview/DataView#getInt16 - i32.const 65535 - i32.and - i32.const 57590 + i32.extend16_s + i32.const -7946 i32.ne if i32.const 0 @@ -3028,8 +3027,7 @@ i32.const 1 i32.const 1 call $~lib/dataview/DataView#getInt16 - i32.const 65535 - i32.and + i32.extend16_s i32.const 22752 i32.ne if @@ -3044,9 +3042,8 @@ i32.const 2 i32.const 1 call $~lib/dataview/DataView#getInt16 - i32.const 65535 - i32.and - i32.const 40792 + i32.extend16_s + i32.const -24744 i32.ne if i32.const 0 @@ -3060,9 +3057,8 @@ i32.const 3 i32.const 1 call $~lib/dataview/DataView#getInt16 - i32.const 65535 - i32.and - i32.const 33439 + i32.extend16_s + i32.const -32097 i32.ne if i32.const 0 @@ -3076,8 +3072,7 @@ i32.const 4 i32.const 1 call $~lib/dataview/DataView#getInt16 - i32.const 65535 - i32.and + i32.extend16_s i32.const 25986 i32.ne if @@ -3092,8 +3087,7 @@ i32.const 5 i32.const 1 call $~lib/dataview/DataView#getInt16 - i32.const 65535 - i32.and + i32.extend16_s i32.const 17253 i32.ne if @@ -3108,8 +3102,7 @@ i32.const 6 i32.const 1 call $~lib/dataview/DataView#getInt16 - i32.const 65535 - i32.and + i32.extend16_s i32.const 24387 i32.ne if @@ -3124,9 +3117,8 @@ i32.const 0 i32.const 0 call $~lib/dataview/DataView#getInt16 - i32.const 65535 - i32.and - i32.const 63200 + i32.extend16_s + i32.const -2336 i32.ne if i32.const 0 @@ -3140,9 +3132,8 @@ i32.const 1 i32.const 0 call $~lib/dataview/DataView#getInt16 - i32.const 65535 - i32.and - i32.const 57432 + i32.extend16_s + i32.const -8104 i32.ne if i32.const 0 @@ -3156,8 +3147,7 @@ i32.const 2 i32.const 0 call $~lib/dataview/DataView#getInt16 - i32.const 65535 - i32.and + i32.extend16_s i32.const 22687 i32.ne if @@ -3172,9 +3162,8 @@ i32.const 3 i32.const 0 call $~lib/dataview/DataView#getInt16 - i32.const 65535 - i32.and - i32.const 40834 + i32.extend16_s + i32.const -24702 i32.ne if i32.const 0 @@ -3188,9 +3177,8 @@ i32.const 4 i32.const 0 call $~lib/dataview/DataView#getInt16 - i32.const 65535 - i32.and - i32.const 33381 + i32.extend16_s + i32.const -32155 i32.ne if i32.const 0 @@ -3204,8 +3192,7 @@ i32.const 5 i32.const 0 call $~lib/dataview/DataView#getInt16 - i32.const 65535 - i32.and + i32.extend16_s i32.const 25923 i32.ne if @@ -3220,8 +3207,7 @@ i32.const 6 i32.const 0 call $~lib/dataview/DataView#getInt16 - i32.const 65535 - i32.and + i32.extend16_s i32.const 17247 i32.ne if @@ -3998,9 +3984,8 @@ i32.const 0 i32.const 1 call $~lib/dataview/DataView#getInt16 - i32.const 65535 - i32.and - i32.const 52176 + i32.extend16_s + i32.const -13360 i32.ne if i32.const 0 @@ -4018,8 +4003,7 @@ i32.const 0 i32.const 0 call $~lib/dataview/DataView#getInt16 - i32.const 65535 - i32.and + i32.extend16_s i32.const 14689 i32.ne if diff --git a/tests/compiler/std/dataview.untouched.wat b/tests/compiler/std/dataview.untouched.wat index cf3fc63326..c2cb3f4fbb 100644 --- a/tests/compiler/std/dataview.untouched.wat +++ b/tests/compiler/std/dataview.untouched.wat @@ -3778,10 +3778,7 @@ i32.const 0 i32.const 1 call $~lib/dataview/DataView#getInt16 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const -7946 i32.eq i32.eqz @@ -3797,10 +3794,7 @@ i32.const 1 i32.const 1 call $~lib/dataview/DataView#getInt16 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const 22752 i32.eq i32.eqz @@ -3816,10 +3810,7 @@ i32.const 2 i32.const 1 call $~lib/dataview/DataView#getInt16 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const -24744 i32.eq i32.eqz @@ -3835,10 +3826,7 @@ i32.const 3 i32.const 1 call $~lib/dataview/DataView#getInt16 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const -32097 i32.eq i32.eqz @@ -3854,10 +3842,7 @@ i32.const 4 i32.const 1 call $~lib/dataview/DataView#getInt16 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const 25986 i32.eq i32.eqz @@ -3873,10 +3858,7 @@ i32.const 5 i32.const 1 call $~lib/dataview/DataView#getInt16 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const 17253 i32.eq i32.eqz @@ -3892,10 +3874,7 @@ i32.const 6 i32.const 1 call $~lib/dataview/DataView#getInt16 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const 24387 i32.eq i32.eqz @@ -3911,10 +3890,7 @@ i32.const 0 i32.const 0 call $~lib/dataview/DataView#getInt16 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const -2336 i32.eq i32.eqz @@ -3930,10 +3906,7 @@ i32.const 1 i32.const 0 call $~lib/dataview/DataView#getInt16 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const -8104 i32.eq i32.eqz @@ -3949,10 +3922,7 @@ i32.const 2 i32.const 0 call $~lib/dataview/DataView#getInt16 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const 22687 i32.eq i32.eqz @@ -3968,10 +3938,7 @@ i32.const 3 i32.const 0 call $~lib/dataview/DataView#getInt16 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const -24702 i32.eq i32.eqz @@ -3987,10 +3954,7 @@ i32.const 4 i32.const 0 call $~lib/dataview/DataView#getInt16 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const -32155 i32.eq i32.eqz @@ -4006,10 +3970,7 @@ i32.const 5 i32.const 0 call $~lib/dataview/DataView#getInt16 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const 25923 i32.eq i32.eqz @@ -4025,10 +3986,7 @@ i32.const 6 i32.const 0 call $~lib/dataview/DataView#getInt16 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const 17247 i32.eq i32.eqz @@ -4857,10 +4815,7 @@ i32.const 0 i32.const 1 call $~lib/dataview/DataView#getInt16 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const -13360 i32.eq i32.eqz @@ -4881,10 +4836,7 @@ i32.const 0 i32.const 0 call $~lib/dataview/DataView#getInt16 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const 14689 i32.eq i32.eqz diff --git a/tests/compiler/std/map.optimized.wat b/tests/compiler/std/map.optimized.wat index e26b679c30..87a0ba14a8 100644 --- a/tests/compiler/std/map.optimized.wat +++ b/tests/compiler/std/map.optimized.wat @@ -1799,84 +1799,6 @@ end end ) - (func $~lib/map/Map#has (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const -1028477379 - i32.mul - i32.const 374761394 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $2 - local.get $2 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $2 - local.get $2 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $2 - local.get $2 - i32.const 16 - i32.shr_u - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - block $__inlined_func$~lib/map/Map#find - loop $while-continue|0 - local.get $0 - if - local.get $0 - i32.load offset=8 - local.tee $2 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $0 - i32.load8_u - local.get $1 - i32.const 255 - i32.and - i32.eq - end - br_if $__inlined_func$~lib/map/Map#find - local.get $2 - i32.const -2 - i32.and - local.set $0 - br $while-continue|0 - end - end - i32.const 0 - local.set $0 - end - local.get $0 - i32.const 0 - i32.ne - ) (func $~lib/map/Map#rehash (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -1961,10 +1883,7 @@ local.get $6 local.get $1 local.get $8 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const -1028477379 i32.mul i32.const 374761394 @@ -2048,10 +1967,7 @@ local.get $0 i32.load offset=4 local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const -1028477379 i32.mul i32.const 374761394 @@ -2098,10 +2014,9 @@ i32.const 0 else local.get $0 - i32.load8_u + i32.load8_s local.get $1 - i32.const 255 - i32.and + i32.extend8_s i32.eq end br_if $__inlined_func$~lib/map/Map#find @@ -3457,10 +3372,7 @@ i32.load offset=4 local.get $1 local.tee $2 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const -1028477379 i32.mul i32.const 374761394 @@ -3507,10 +3419,9 @@ i32.const 0 else local.get $1 - i32.load8_u + i32.load8_s local.get $2 - i32.const 255 - i32.and + i32.extend8_s i32.eq end br_if $__inlined_func$~lib/map/Map#find @@ -3635,16 +3546,16 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $16 i64.const 0 i64.store - local.get $2 + local.get $16 i64.const 0 i64.store offset=8 - local.get $2 + local.get $16 i32.const 0 i32.store offset=16 - local.get $2 + local.get $16 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -3653,62 +3564,125 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $3 + local.tee $4 i32.const 0 i32.store - local.get $3 + local.get $4 i32.const 24 i32.const 3 call $~lib/rt/itcms/__new - local.tee $5 + local.tee $15 i32.store - local.get $5 + local.get $15 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $3 + local.tee $4 i32.store - local.get $5 - local.get $3 + local.get $15 + local.get $4 call $~lib/rt/itcms/__link - local.get $5 + local.get $15 i32.const 3 i32.store offset=4 - local.get $5 + local.get $15 i32.const 48 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $3 + local.tee $4 i32.store offset=8 - local.get $5 - local.get $3 + local.get $15 + local.get $4 call $~lib/rt/itcms/__link - local.get $5 + local.get $15 i32.const 4 i32.store offset=12 - local.get $5 + local.get $15 i32.const 0 i32.store offset=16 - local.get $5 + local.get $15 i32.const 0 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 - local.get $5 + local.get $16 + local.get $15 i32.store loop $for-loop|1 local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const 100 i32.lt_s if - local.get $5 + local.get $15 + i32.load + local.get $15 + i32.load offset=4 local.get $1 - call $~lib/map/Map#has + i32.extend8_s + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $4 + local.get $4 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $4 + local.get $4 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $4 + local.get $4 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $3 + block $__inlined_func$~lib/map/Map#find + loop $while-continue|0 + local.get $3 + if + local.get $3 + i32.load offset=8 + local.tee $4 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $3 + i32.load8_s + local.get $1 + i32.extend8_s + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find + local.get $4 + i32.const -2 + i32.and + local.set $3 + br $while-continue|0 + end + end + i32.const 0 + local.set $3 + end + local.get $3 if i32.const 0 i32.const 1568 @@ -3717,42 +3691,102 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $15 local.get $1 local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s + local.tee $4 i32.const 10 i32.add call $~lib/map/Map#set - local.get $5 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 8 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $5 - local.get $1 - call $~lib/map/Map#get - local.get $1 - i32.const 24 + local.get $15 + i32.load + local.get $15 + i32.load offset=4 + local.get $4 + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $4 + local.get $4 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $4 + local.get $4 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $4 + local.get $4 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 i32.shl - i32.const 24 - i32.shr_s - i32.const 10 i32.add - i32.ne - if - i32.const 0 - i32.const 1568 + i32.load + local.set $3 + block $__inlined_func$~lib/map/Map#find1 + loop $while-continue|02 + local.get $3 + if + local.get $3 + i32.load offset=8 + local.tee $4 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $3 + i32.load8_s + local.get $1 + i32.extend8_s + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find1 + local.get $4 + i32.const -2 + i32.and + local.set $3 + br $while-continue|02 + end + end + i32.const 0 + local.set $3 + end + local.get $3 + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 8 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $15 + local.get $1 + call $~lib/map/Map#get + local.get $1 + i32.extend8_s + i32.const 10 + i32.add + i32.ne + if + i32.const 0 + i32.const 1568 i32.const 9 i32.const 5 call $~lib/builtins/abort @@ -3765,7 +3799,7 @@ br $for-loop|1 end end - local.get $5 + local.get $15 i32.load offset=20 i32.const 100 i32.ne @@ -3781,16 +3815,79 @@ local.set $1 loop $for-loop|3 local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const 100 i32.lt_s if - local.get $5 + local.get $15 + i32.load + local.get $15 + i32.load offset=4 local.get $1 - call $~lib/map/Map#has + i32.extend8_s + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $4 + local.get $4 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $4 + local.get $4 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $4 + local.get $4 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $3 + block $__inlined_func$~lib/map/Map#find4 + loop $while-continue|05 + local.get $3 + if + local.get $3 + i32.load offset=8 + local.tee $4 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $3 + i32.load8_s + local.get $1 + i32.extend8_s + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find4 + local.get $4 + i32.const -2 + i32.and + local.set $3 + br $while-continue|05 + end + end + i32.const 0 + local.set $3 + end + local.get $3 i32.eqz if i32.const 0 @@ -3800,14 +3897,11 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $15 local.get $1 call $~lib/map/Map#get local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const 10 i32.add i32.ne @@ -3819,19 +3913,82 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $15 local.get $1 local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s + local.tee $4 i32.const 20 i32.add call $~lib/map/Map#set - local.get $5 - local.get $1 - call $~lib/map/Map#has + local.get $15 + i32.load + local.get $15 + i32.load offset=4 + local.get $4 + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $4 + local.get $4 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $4 + local.get $4 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $4 + local.get $4 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $3 + block $__inlined_func$~lib/map/Map#find7 + loop $while-continue|08 + local.get $3 + if + local.get $3 + i32.load offset=8 + local.tee $4 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $3 + i32.load8_s + local.get $1 + i32.extend8_s + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find7 + local.get $4 + i32.const -2 + i32.and + local.set $3 + br $while-continue|08 + end + end + i32.const 0 + local.set $3 + end + local.get $3 i32.eqz if i32.const 0 @@ -3841,14 +3998,11 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $15 local.get $1 call $~lib/map/Map#get local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const 20 i32.add i32.ne @@ -3867,7 +4021,7 @@ br $for-loop|3 end end - local.get $5 + local.get $15 i32.load offset=20 i32.const 100 i32.ne @@ -3882,7 +4036,7 @@ i32.const 0 local.set $1 global.get $~lib/memory/__stack_pointer - local.tee $10 + local.tee $0 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -3891,16 +4045,16 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $3 + local.tee $4 i32.const 0 i32.store - local.get $5 + local.get $15 i32.load offset=8 - local.set $9 - local.get $5 + local.set $3 + local.get $15 i32.load offset=16 - local.set $8 - local.get $3 + local.set $12 + local.get $4 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer @@ -3909,31 +4063,31 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $16 i64.const 0 i64.store - local.get $2 + local.get $16 i32.const 16 i32.const 4 call $~lib/rt/itcms/__new - local.tee $7 + local.tee $14 i32.store - local.get $7 + local.get $14 i32.const 0 i32.store - local.get $7 + local.get $14 i32.const 0 call $~lib/rt/itcms/__link - local.get $7 + local.get $14 i32.const 0 i32.store offset=4 - local.get $7 + local.get $14 i32.const 0 i32.store offset=8 - local.get $7 + local.get $14 i32.const 0 i32.store offset=12 - local.get $8 + local.get $12 i32.const 1073741820 i32.gt_u if @@ -3945,61 +4099,61 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $12 i32.const 8 - local.get $8 + local.get $12 i32.const 8 i32.gt_u select - local.tee $2 + local.tee $16 i32.const 0 call $~lib/rt/itcms/__new - local.tee $4 + local.tee $13 i32.store offset=4 - local.get $4 - local.get $2 + local.get $13 + local.get $16 call $~lib/memory/memory.fill - local.get $7 - local.get $4 + local.get $14 + local.get $13 i32.store - local.get $7 - local.get $4 + local.get $14 + local.get $13 call $~lib/rt/itcms/__link - local.get $7 - local.get $4 + local.get $14 + local.get $13 i32.store offset=4 - local.get $7 - local.get $2 + local.get $14 + local.get $16 i32.store offset=8 - local.get $7 - local.get $8 + local.get $14 + local.get $12 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 - local.get $7 + local.get $4 + local.get $14 i32.store loop $for-loop|0 - local.get $0 - local.get $8 + local.get $5 + local.get $12 i32.lt_s if - local.get $9 - local.get $0 + local.get $3 + local.get $5 i32.const 12 i32.mul i32.add - local.tee $3 + local.tee $4 i32.load offset=8 i32.const 1 i32.and i32.eqz if - local.get $7 + local.get $14 local.get $1 - local.get $3 + local.get $4 i32.load8_s call $~lib/array/Array#__set local.get $1 @@ -4007,35 +4161,35 @@ i32.add local.set $1 end - local.get $0 + local.get $5 i32.const 1 i32.add - local.set $0 + local.set $5 br $for-loop|0 end end - local.get $7 + local.get $14 local.get $1 i32.const 0 i32.const 0 call $~lib/array/ensureCapacity - local.get $7 + local.get $14 local.get $1 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $10 - local.get $7 + local.get $0 + local.get $14 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $15 call $~lib/map/Map#values - local.tee $14 + local.tee $7 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $4 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -4044,62 +4198,63 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $3 + local.tee $1 i32.const 0 i32.store - local.get $3 + local.get $1 i32.const 24 i32.const 6 call $~lib/rt/itcms/__new - local.tee $4 + local.tee $5 i32.store - local.get $4 + local.get $5 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $3 + local.tee $1 i32.store - local.get $4 - local.get $3 + local.get $5 + local.get $1 call $~lib/rt/itcms/__link - local.get $4 + local.get $5 i32.const 3 i32.store offset=4 - local.get $4 + local.get $5 i32.const 32 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $3 + local.tee $1 i32.store offset=8 - local.get $4 - local.get $3 + local.get $5 + local.get $1 call $~lib/rt/itcms/__link - local.get $4 + local.get $5 i32.const 4 i32.store offset=12 - local.get $4 + local.get $5 i32.const 0 i32.store offset=16 - local.get $4 + local.get $5 i32.const 0 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 local.get $4 + local.get $5 i32.store offset=12 global.get $~lib/memory/__stack_pointer call $~lib/map/Map#constructor - local.tee $12 + local.tee $9 i32.store offset=16 loop $for-loop|4 - local.get $6 - local.get $7 + local.get $2 + local.get $14 i32.load offset=12 i32.lt_s if - local.get $6 - local.get $7 + local.get $2 + local.tee $3 + local.get $14 i32.load offset=12 i32.ge_u if @@ -4110,19 +4265,85 @@ call $~lib/builtins/abort unreachable end - local.get $6 - local.get $7 + local.get $3 + local.get $14 i32.load offset=4 i32.add i32.load8_s - local.set $9 - local.get $14 - local.get $6 + local.set $2 + local.get $7 + local.get $3 call $~lib/array/Array#__get - local.set $13 - local.get $5 - local.get $9 - call $~lib/map/Map#has + local.set $8 + local.get $15 + i32.load + local.get $15 + i32.load offset=4 + local.get $2 + i32.extend8_s + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + local.get $1 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + local.get $1 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + local.get $1 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $16 + block $__inlined_func$~lib/map/Map#find11 + loop $while-continue|012 + local.get $16 + if + local.get $16 + i32.load offset=8 + local.tee $1 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $16 + i32.load8_s + local.get $2 + i32.extend8_s + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find11 + local.get $1 + i32.const -2 + i32.and + local.set $16 + br $while-continue|012 + end + end + i32.const 0 + local.set $16 + end + local.get $16 i32.eqz if i32.const 0 @@ -4132,11 +4353,78 @@ call $~lib/builtins/abort unreachable end - local.get $5 - local.get $13 + local.get $15 + i32.load + local.get $15 + i32.load offset=4 + local.get $8 i32.const 20 i32.sub - call $~lib/map/Map#has + local.tee $4 + i32.extend8_s + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + local.get $1 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + local.get $1 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + local.get $1 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + block $__inlined_func$~lib/map/Map#find14 + loop $while-continue|015 + local.get $0 + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $0 + i32.load8_s + local.get $4 + i32.extend8_s + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find14 + local.get $1 + i32.const -2 + i32.and + local.set $0 + br $while-continue|015 + end + end + i32.const 0 + local.set $0 + end + local.get $0 i32.eqz if i32.const 0 @@ -4157,11 +4445,9 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $9 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + local.get $2 + local.tee $4 + i32.extend8_s i32.const -1028477379 i32.mul i32.const 374761394 @@ -4170,31 +4456,31 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $3 - local.get $3 + local.tee $2 + local.get $2 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $3 - local.get $3 + local.tee $2 + local.get $2 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $3 - local.get $3 + local.tee $2 + local.get $2 i32.const 16 i32.shr_u i32.xor - local.tee $2 - local.set $15 - local.get $4 + local.tee $1 + local.set $6 + local.get $5 i32.load - local.get $2 - local.get $4 + local.get $1 + local.get $5 i32.load offset=4 i32.and i32.const 2 @@ -4203,30 +4489,29 @@ i32.load local.set $0 block $__inlined_func$~lib/map/Map#find - loop $while-continue|0 + loop $while-continue|017 local.get $0 if local.get $0 i32.load offset=4 - local.tee $2 + local.tee $1 i32.const 1 i32.and if (result i32) i32.const 0 else local.get $0 - i32.load8_u - local.get $9 - i32.const 255 - i32.and + i32.load8_s + local.get $4 + i32.extend8_s i32.eq end br_if $__inlined_func$~lib/map/Map#find - local.get $2 + local.get $1 i32.const -2 i32.and local.set $0 - br $while-continue|0 + br $while-continue|017 end end i32.const 0 @@ -4235,18 +4520,18 @@ local.get $0 if local.get $0 - local.get $9 + local.get $4 i32.store8 offset=1 else - local.get $4 + local.get $5 i32.load offset=16 - local.get $4 + local.get $5 i32.load offset=12 i32.eq if - local.get $4 + local.get $5 i32.load offset=20 - local.get $4 + local.get $5 i32.load offset=12 i32.const 3 i32.mul @@ -4254,17 +4539,17 @@ i32.div_s i32.lt_s if (result i32) - local.get $4 + local.get $5 i32.load offset=4 else - local.get $4 + local.get $5 i32.load offset=4 i32.const 1 i32.shl i32.const 1 i32.or end - local.set $10 + local.set $16 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -4274,70 +4559,67 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $1 i64.const 0 i64.store - local.get $2 - local.get $10 + local.get $1 + local.get $16 i32.const 1 i32.add - local.tee $2 + local.tee $1 i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $11 + local.tee $10 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.const 3 i32.shl i32.const 3 i32.div_s - local.tee $16 + local.tee $2 i32.const 3 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $2 + local.tee $1 i32.store offset=4 - local.get $4 + local.get $5 i32.load offset=8 - local.tee $3 - local.get $4 + local.tee $11 + local.get $5 i32.load offset=16 i32.const 3 i32.shl i32.add - local.set $1 - local.get $2 + local.set $12 + local.get $1 local.set $0 - loop $while-continue|02 - local.get $1 - local.get $3 + loop $while-continue|018 + local.get $11 + local.get $12 i32.ne if - local.get $3 + local.get $11 i32.load offset=4 i32.const 1 i32.and i32.eqz if local.get $0 - local.get $3 + local.get $11 i32.load8_s - local.tee $8 + local.tee $13 i32.store8 local.get $0 - local.get $3 + local.get $11 i32.load8_s offset=1 i32.store8 offset=1 local.get $0 - local.get $11 local.get $10 - local.get $8 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + local.get $16 + local.get $13 + i32.extend8_s i32.const -1028477379 i32.mul i32.const 374761394 @@ -4346,22 +4628,22 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $8 - local.get $8 + local.tee $13 + local.get $13 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $8 - local.get $8 + local.tee $13 + local.get $13 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $8 - local.get $8 + local.tee $13 + local.get $13 i32.const 16 i32.shr_u i32.xor @@ -4369,10 +4651,10 @@ i32.const 2 i32.shl i32.add - local.tee $8 + local.tee $13 i32.load i32.store offset=4 - local.get $8 + local.get $13 local.get $0 i32.store local.get $0 @@ -4380,33 +4662,33 @@ i32.add local.set $0 end - local.get $3 + local.get $11 i32.const 8 i32.add - local.set $3 - br $while-continue|02 + local.set $11 + br $while-continue|018 end end - local.get $4 - local.get $11 + local.get $5 + local.get $10 i32.store - local.get $4 - local.get $11 - call $~lib/rt/itcms/__link - local.get $4 + local.get $5 local.get $10 + call $~lib/rt/itcms/__link + local.get $5 + local.get $16 i32.store offset=4 - local.get $4 - local.get $2 + local.get $5 + local.get $1 i32.store offset=8 - local.get $4 - local.get $2 + local.get $5 + local.get $1 call $~lib/rt/itcms/__link - local.get $4 - local.get $16 + local.get $5 + local.get $2 i32.store offset=12 - local.get $4 - local.get $4 + local.get $5 + local.get $5 i32.load offset=20 i32.store offset=16 global.get $~lib/memory/__stack_pointer @@ -4415,70 +4697,70 @@ global.set $~lib/memory/__stack_pointer end global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $5 i32.load offset=8 - local.tee $10 + local.tee $16 i32.store - local.get $4 - local.get $4 + local.get $5 + local.get $5 i32.load offset=16 - local.tee $2 + local.tee $1 i32.const 1 i32.add i32.store offset=16 - local.get $10 - local.get $2 + local.get $16 + local.get $1 i32.const 3 i32.shl i32.add - local.tee $2 - local.get $9 - i32.store8 - local.get $2 - local.get $9 - i32.store8 offset=1 + local.tee $1 local.get $4 + i32.store8 + local.get $1 local.get $4 + i32.store8 offset=1 + local.get $5 + local.get $5 i32.load offset=20 i32.const 1 i32.add i32.store offset=20 - local.get $2 - local.get $4 + local.get $1 + local.get $5 i32.load - local.get $15 - local.get $4 + local.get $6 + local.get $5 i32.load offset=4 i32.and i32.const 2 i32.shl i32.add - local.tee $3 + local.tee $2 i32.load i32.store offset=4 - local.get $3 local.get $2 + local.get $1 i32.store end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $12 - local.get $13 + local.get $9 + local.get $8 i32.const 20 i32.sub - local.tee $3 - local.get $3 + local.tee $2 + local.get $2 call $~lib/map/Map#set - local.get $6 + local.get $3 i32.const 1 i32.add - local.set $6 + local.set $2 br $for-loop|4 end end - local.get $4 + local.get $5 i32.load offset=20 i32.const 100 i32.ne @@ -4490,7 +4772,7 @@ call $~lib/builtins/abort unreachable end - local.get $12 + local.get $9 i32.load offset=20 i32.const 100 i32.ne @@ -4503,19 +4785,82 @@ unreachable end i32.const 0 - local.set $6 + local.set $2 loop $for-loop|6 - local.get $6 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + local.get $2 + i32.extend8_s i32.const 50 i32.lt_s if - local.get $5 - local.get $6 - call $~lib/map/Map#has + local.get $15 + i32.load + local.get $15 + i32.load offset=4 + local.get $2 + i32.extend8_s + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + local.get $1 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + local.get $1 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + local.get $1 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $16 + block $__inlined_func$~lib/map/Map#find20 + loop $while-continue|021 + local.get $16 + if + local.get $16 + i32.load offset=8 + local.tee $1 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $16 + i32.load8_s + local.get $2 + i32.extend8_s + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find20 + local.get $1 + i32.const -2 + i32.and + local.set $16 + br $while-continue|021 + end + end + i32.const 0 + local.set $16 + end + local.get $16 i32.eqz if i32.const 0 @@ -4525,14 +4870,11 @@ call $~lib/builtins/abort unreachable end - local.get $5 - local.get $6 + local.get $15 + local.get $2 call $~lib/map/Map#get - local.get $6 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + local.get $2 + i32.extend8_s i32.const 20 i32.add i32.ne @@ -4544,28 +4886,94 @@ call $~lib/builtins/abort unreachable end - local.get $5 - local.get $6 + local.get $15 + local.get $2 call $~lib/map/Map#delete - local.get $5 - local.get $6 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 1568 - i32.const 44 - i32.const 5 + local.get $15 + i32.load + local.get $15 + i32.load offset=4 + local.get $2 + i32.extend8_s + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + local.get $1 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + local.get $1 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + local.get $1 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $16 + block $__inlined_func$~lib/map/Map#find23 + loop $while-continue|024 + local.get $16 + if + local.get $16 + i32.load offset=8 + local.tee $1 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $16 + i32.load8_s + local.get $2 + i32.extend8_s + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find23 + local.get $1 + i32.const -2 + i32.and + local.set $16 + br $while-continue|024 + end + end + i32.const 0 + local.set $16 + end + local.get $16 + if + i32.const 0 + i32.const 1568 + i32.const 44 + i32.const 5 call $~lib/builtins/abort unreachable end - local.get $6 + local.get $2 i32.const 1 i32.add - local.set $6 + local.set $2 br $for-loop|6 end end - local.get $5 + local.get $15 i32.load offset=20 i32.const 50 i32.ne @@ -4578,19 +4986,82 @@ unreachable end i32.const 0 - local.set $6 + local.set $2 loop $for-loop|8 - local.get $6 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + local.get $2 + i32.extend8_s i32.const 50 i32.lt_s if - local.get $5 - local.get $6 - call $~lib/map/Map#has + local.get $15 + i32.load + local.get $15 + i32.load offset=4 + local.get $2 + i32.extend8_s + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + local.get $1 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + local.get $1 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + local.get $1 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $16 + block $__inlined_func$~lib/map/Map#find26 + loop $while-continue|027 + local.get $16 + if + local.get $16 + i32.load offset=8 + local.tee $1 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $16 + i32.load8_s + local.get $2 + i32.extend8_s + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find26 + local.get $1 + i32.const -2 + i32.and + local.set $16 + br $while-continue|027 + end + end + i32.const 0 + local.set $16 + end + local.get $16 if i32.const 0 i32.const 1568 @@ -4599,19 +5070,82 @@ call $~lib/builtins/abort unreachable end - local.get $5 - local.get $6 - local.get $6 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + local.get $15 + local.get $2 + local.get $2 + i32.extend8_s + local.tee $1 i32.const 10 i32.add call $~lib/map/Map#set - local.get $5 - local.get $6 - call $~lib/map/Map#has + local.get $15 + i32.load + local.get $15 + i32.load offset=4 + local.get $1 + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + local.get $1 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + local.get $1 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + local.get $1 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $16 + block $__inlined_func$~lib/map/Map#find29 + loop $while-continue|030 + local.get $16 + if + local.get $16 + i32.load offset=8 + local.tee $1 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $16 + i32.load8_s + local.get $2 + i32.extend8_s + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find29 + local.get $1 + i32.const -2 + i32.and + local.set $16 + br $while-continue|030 + end + end + i32.const 0 + local.set $16 + end + local.get $16 i32.eqz if i32.const 0 @@ -4621,12 +5155,78 @@ call $~lib/builtins/abort unreachable end - local.get $5 - local.get $6 + local.get $15 + local.get $2 call $~lib/map/Map#delete - local.get $5 - local.get $6 - call $~lib/map/Map#has + local.get $15 + i32.load + local.get $15 + i32.load offset=4 + local.get $2 + i32.extend8_s + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + local.get $1 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + local.get $1 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + local.get $1 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $16 + block $__inlined_func$~lib/map/Map#find32 + loop $while-continue|033 + local.get $16 + if + local.get $16 + i32.load offset=8 + local.tee $1 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $16 + i32.load8_s + local.get $2 + i32.extend8_s + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find32 + local.get $1 + i32.const -2 + i32.and + local.set $16 + br $while-continue|033 + end + end + i32.const 0 + local.set $16 + end + local.get $16 if i32.const 0 i32.const 1568 @@ -4635,14 +5235,14 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $2 i32.const 1 i32.add - local.set $6 + local.set $2 br $for-loop|8 end end - local.get $5 + local.get $15 i32.load offset=20 i32.const 50 i32.ne @@ -4654,9 +5254,9 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $15 call $~lib/map/Map#clear - local.get $5 + local.get $15 i32.load offset=20 if i32.const 0 @@ -6846,84 +7446,6 @@ call $~lib/builtins/abort unreachable ) - (func $~lib/map/Map#has (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const -1028477379 - i32.mul - i32.const 374761395 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $2 - local.get $2 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $2 - local.get $2 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $2 - local.get $2 - i32.const 16 - i32.shr_u - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - block $__inlined_func$~lib/map/Map#find - loop $while-continue|0 - local.get $0 - if - local.get $0 - i32.load offset=8 - local.tee $2 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $0 - i32.load16_u - local.get $1 - i32.const 65535 - i32.and - i32.eq - end - br_if $__inlined_func$~lib/map/Map#find - local.get $2 - i32.const -2 - i32.and - local.set $0 - br $while-continue|0 - end - end - i32.const 0 - local.set $0 - end - local.get $0 - i32.const 0 - i32.ne - ) (func $~lib/map/Map#rehash (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -7008,10 +7530,7 @@ local.get $6 local.get $1 local.get $8 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const -1028477379 i32.mul i32.const 374761395 @@ -7095,10 +7614,7 @@ local.get $0 i32.load offset=4 local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const -1028477379 i32.mul i32.const 374761395 @@ -7145,10 +7661,9 @@ i32.const 0 else local.get $0 - i32.load16_u + i32.load16_s local.get $1 - i32.const 65535 - i32.and + i32.extend16_s i32.eq end br_if $__inlined_func$~lib/map/Map#find @@ -7223,10 +7738,7 @@ i32.load offset=4 local.get $1 local.tee $2 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const -1028477379 i32.mul i32.const 374761395 @@ -7273,10 +7785,9 @@ i32.const 0 else local.get $1 - i32.load16_u + i32.load16_s local.get $2 - i32.const 65535 - i32.and + i32.extend16_s i32.eq end br_if $__inlined_func$~lib/map/Map#find @@ -7370,16 +7881,16 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $16 i64.const 0 i64.store - local.get $2 + local.get $16 i64.const 0 i64.store offset=8 - local.get $2 + local.get $16 i32.const 0 i32.store offset=16 - local.get $2 + local.get $16 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -7388,62 +7899,125 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $3 + local.tee $4 i32.const 0 i32.store - local.get $3 + local.get $4 i32.const 24 i32.const 11 call $~lib/rt/itcms/__new - local.tee $5 + local.tee $15 i32.store - local.get $5 + local.get $15 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $3 + local.tee $4 i32.store - local.get $5 - local.get $3 + local.get $15 + local.get $4 call $~lib/rt/itcms/__link - local.get $5 + local.get $15 i32.const 3 i32.store offset=4 - local.get $5 + local.get $15 i32.const 48 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $3 + local.tee $4 i32.store offset=8 - local.get $5 - local.get $3 + local.get $15 + local.get $4 call $~lib/rt/itcms/__link - local.get $5 + local.get $15 i32.const 4 i32.store offset=12 - local.get $5 + local.get $15 i32.const 0 i32.store offset=16 - local.get $5 + local.get $15 i32.const 0 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 - local.get $5 + local.get $16 + local.get $15 i32.store loop $for-loop|1 local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const 100 i32.lt_s if - local.get $5 + local.get $15 + i32.load + local.get $15 + i32.load offset=4 local.get $1 - call $~lib/map/Map#has + i32.extend16_s + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $4 + local.get $4 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $4 + local.get $4 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $4 + local.get $4 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $3 + block $__inlined_func$~lib/map/Map#find + loop $while-continue|0 + local.get $3 + if + local.get $3 + i32.load offset=8 + local.tee $4 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $3 + i32.load16_s + local.get $1 + i32.extend16_s + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find + local.get $4 + i32.const -2 + i32.and + local.set $3 + br $while-continue|0 + end + end + i32.const 0 + local.set $3 + end + local.get $3 if i32.const 0 i32.const 1568 @@ -7452,19 +8026,82 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $15 local.get $1 local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s + local.tee $4 i32.const 10 i32.add call $~lib/map/Map#set - local.get $5 - local.get $1 - call $~lib/map/Map#has + local.get $15 + i32.load + local.get $15 + i32.load offset=4 + local.get $4 + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $4 + local.get $4 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $4 + local.get $4 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $4 + local.get $4 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $3 + block $__inlined_func$~lib/map/Map#find1 + loop $while-continue|02 + local.get $3 + if + local.get $3 + i32.load offset=8 + local.tee $4 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $3 + i32.load16_s + local.get $1 + i32.extend16_s + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find1 + local.get $4 + i32.const -2 + i32.and + local.set $3 + br $while-continue|02 + end + end + i32.const 0 + local.set $3 + end + local.get $3 i32.eqz if i32.const 0 @@ -7474,58 +8111,118 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $15 local.get $1 call $~lib/map/Map#get local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const 10 i32.add i32.ne if i32.const 0 - i32.const 1568 - i32.const 9 - i32.const 5 - call $~lib/builtins/abort - unreachable + i32.const 1568 + i32.const 9 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $15 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 11 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $1 + loop $for-loop|3 + local.get $1 + i32.extend16_s + i32.const 100 + i32.lt_s + if + local.get $15 + i32.load + local.get $15 + i32.load offset=4 + local.get $1 + i32.extend16_s + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $4 + local.get $4 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $4 + local.get $4 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $4 + local.get $4 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $3 + block $__inlined_func$~lib/map/Map#find4 + loop $while-continue|05 + local.get $3 + if + local.get $3 + i32.load offset=8 + local.tee $4 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $3 + i32.load16_s + local.get $1 + i32.extend16_s + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find4 + local.get $4 + i32.const -2 + i32.and + local.set $3 + br $while-continue|05 + end + end + i32.const 0 + local.set $3 end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end - end - local.get $5 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 11 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $1 - loop $for-loop|3 - local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const 100 - i32.lt_s - if - local.get $5 - local.get $1 - call $~lib/map/Map#has + local.get $3 i32.eqz if i32.const 0 @@ -7535,14 +8232,11 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $15 local.get $1 call $~lib/map/Map#get local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const 10 i32.add i32.ne @@ -7554,19 +8248,82 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $15 local.get $1 local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s + local.tee $4 i32.const 20 i32.add call $~lib/map/Map#set - local.get $5 - local.get $1 - call $~lib/map/Map#has + local.get $15 + i32.load + local.get $15 + i32.load offset=4 + local.get $4 + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $4 + local.get $4 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $4 + local.get $4 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $4 + local.get $4 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $3 + block $__inlined_func$~lib/map/Map#find7 + loop $while-continue|08 + local.get $3 + if + local.get $3 + i32.load offset=8 + local.tee $4 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $3 + i32.load16_s + local.get $1 + i32.extend16_s + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find7 + local.get $4 + i32.const -2 + i32.and + local.set $3 + br $while-continue|08 + end + end + i32.const 0 + local.set $3 + end + local.get $3 i32.eqz if i32.const 0 @@ -7576,14 +8333,11 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $15 local.get $1 call $~lib/map/Map#get local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const 20 i32.add i32.ne @@ -7602,7 +8356,7 @@ br $for-loop|3 end end - local.get $5 + local.get $15 i32.load offset=20 i32.const 100 i32.ne @@ -7617,7 +8371,7 @@ i32.const 0 local.set $1 global.get $~lib/memory/__stack_pointer - local.tee $10 + local.tee $0 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -7626,16 +8380,16 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $3 + local.tee $4 i32.const 0 i32.store - local.get $5 + local.get $15 i32.load offset=8 - local.set $9 - local.get $5 + local.set $3 + local.get $15 i32.load offset=16 - local.set $8 - local.get $3 + local.set $12 + local.get $4 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer @@ -7644,31 +8398,31 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $16 i64.const 0 i64.store - local.get $2 + local.get $16 i32.const 16 i32.const 12 call $~lib/rt/itcms/__new - local.tee $7 + local.tee $14 i32.store - local.get $7 + local.get $14 i32.const 0 i32.store - local.get $7 + local.get $14 i32.const 0 call $~lib/rt/itcms/__link - local.get $7 + local.get $14 i32.const 0 i32.store offset=4 - local.get $7 + local.get $14 i32.const 0 i32.store offset=8 - local.get $7 + local.get $14 i32.const 0 i32.store offset=12 - local.get $8 + local.get $12 i32.const 536870910 i32.gt_u if @@ -7680,63 +8434,63 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $12 i32.const 8 - local.get $8 + local.get $12 i32.const 8 i32.gt_u select i32.const 1 i32.shl - local.tee $2 + local.tee $16 i32.const 0 call $~lib/rt/itcms/__new - local.tee $4 + local.tee $13 i32.store offset=4 - local.get $4 - local.get $2 + local.get $13 + local.get $16 call $~lib/memory/memory.fill - local.get $7 - local.get $4 + local.get $14 + local.get $13 i32.store - local.get $7 - local.get $4 + local.get $14 + local.get $13 call $~lib/rt/itcms/__link - local.get $7 - local.get $4 + local.get $14 + local.get $13 i32.store offset=4 - local.get $7 - local.get $2 + local.get $14 + local.get $16 i32.store offset=8 - local.get $7 - local.get $8 + local.get $14 + local.get $12 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 - local.get $7 + local.get $4 + local.get $14 i32.store loop $for-loop|0 - local.get $0 - local.get $8 + local.get $5 + local.get $12 i32.lt_s if - local.get $9 - local.get $0 + local.get $3 + local.get $5 i32.const 12 i32.mul i32.add - local.tee $3 + local.tee $4 i32.load offset=8 i32.const 1 i32.and i32.eqz if - local.get $7 + local.get $14 local.get $1 - local.get $3 + local.get $4 i32.load16_s call $~lib/array/Array#__set local.get $1 @@ -7744,35 +8498,35 @@ i32.add local.set $1 end - local.get $0 + local.get $5 i32.const 1 i32.add - local.set $0 + local.set $5 br $for-loop|0 end end - local.get $7 + local.get $14 local.get $1 i32.const 1 i32.const 0 call $~lib/array/ensureCapacity - local.get $7 + local.get $14 local.get $1 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $10 - local.get $7 + local.get $0 + local.get $14 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $15 call $~lib/map/Map#values - local.tee $14 + local.tee $7 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $4 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -7781,62 +8535,63 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $3 + local.tee $1 i32.const 0 i32.store - local.get $3 + local.get $1 i32.const 24 i32.const 13 call $~lib/rt/itcms/__new - local.tee $4 + local.tee $5 i32.store - local.get $4 + local.get $5 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $3 + local.tee $1 i32.store - local.get $4 - local.get $3 + local.get $5 + local.get $1 call $~lib/rt/itcms/__link - local.get $4 + local.get $5 i32.const 3 i32.store offset=4 - local.get $4 + local.get $5 i32.const 32 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $3 + local.tee $1 i32.store offset=8 - local.get $4 - local.get $3 + local.get $5 + local.get $1 call $~lib/rt/itcms/__link - local.get $4 + local.get $5 i32.const 4 i32.store offset=12 - local.get $4 + local.get $5 i32.const 0 i32.store offset=16 - local.get $4 + local.get $5 i32.const 0 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 local.get $4 + local.get $5 i32.store offset=12 global.get $~lib/memory/__stack_pointer call $~lib/map/Map#constructor - local.tee $12 + local.tee $9 i32.store offset=16 loop $for-loop|4 - local.get $6 - local.get $7 + local.get $2 + local.get $14 i32.load offset=12 i32.lt_s if - local.get $6 - local.get $7 + local.get $2 + local.tee $3 + local.get $14 i32.load offset=12 i32.ge_u if @@ -7847,21 +8602,87 @@ call $~lib/builtins/abort unreachable end - local.get $7 + local.get $14 i32.load offset=4 - local.get $6 + local.get $3 i32.const 1 i32.shl i32.add i32.load16_s - local.set $9 - local.get $14 - local.get $6 + local.set $2 + local.get $7 + local.get $3 call $~lib/array/Array#__get - local.set $13 - local.get $5 - local.get $9 - call $~lib/map/Map#has + local.set $8 + local.get $15 + i32.load + local.get $15 + i32.load offset=4 + local.get $2 + i32.extend16_s + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + local.get $1 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + local.get $1 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + local.get $1 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $16 + block $__inlined_func$~lib/map/Map#find11 + loop $while-continue|012 + local.get $16 + if + local.get $16 + i32.load offset=8 + local.tee $1 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $16 + i32.load16_s + local.get $2 + i32.extend16_s + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find11 + local.get $1 + i32.const -2 + i32.and + local.set $16 + br $while-continue|012 + end + end + i32.const 0 + local.set $16 + end + local.get $16 i32.eqz if i32.const 0 @@ -7871,11 +8692,78 @@ call $~lib/builtins/abort unreachable end - local.get $5 - local.get $13 + local.get $15 + i32.load + local.get $15 + i32.load offset=4 + local.get $8 i32.const 20 i32.sub - call $~lib/map/Map#has + local.tee $4 + i32.extend16_s + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + local.get $1 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + local.get $1 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + local.get $1 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + block $__inlined_func$~lib/map/Map#find14 + loop $while-continue|015 + local.get $0 + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $0 + i32.load16_s + local.get $4 + i32.extend16_s + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find14 + local.get $1 + i32.const -2 + i32.and + local.set $0 + br $while-continue|015 + end + end + i32.const 0 + local.set $0 + end + local.get $0 i32.eqz if i32.const 0 @@ -7896,11 +8784,9 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $9 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + local.get $2 + local.tee $4 + i32.extend16_s i32.const -1028477379 i32.mul i32.const 374761395 @@ -7909,31 +8795,31 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $3 - local.get $3 + local.tee $2 + local.get $2 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $3 - local.get $3 + local.tee $2 + local.get $2 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $3 - local.get $3 + local.tee $2 + local.get $2 i32.const 16 i32.shr_u i32.xor - local.tee $2 - local.set $15 - local.get $4 + local.tee $1 + local.set $6 + local.get $5 i32.load - local.get $2 - local.get $4 + local.get $1 + local.get $5 i32.load offset=4 i32.and i32.const 2 @@ -7942,30 +8828,29 @@ i32.load local.set $0 block $__inlined_func$~lib/map/Map#find - loop $while-continue|0 + loop $while-continue|017 local.get $0 if local.get $0 i32.load offset=4 - local.tee $2 + local.tee $1 i32.const 1 i32.and if (result i32) i32.const 0 else local.get $0 - i32.load16_u - local.get $9 - i32.const 65535 - i32.and + i32.load16_s + local.get $4 + i32.extend16_s i32.eq end br_if $__inlined_func$~lib/map/Map#find - local.get $2 + local.get $1 i32.const -2 i32.and local.set $0 - br $while-continue|0 + br $while-continue|017 end end i32.const 0 @@ -7974,18 +8859,18 @@ local.get $0 if local.get $0 - local.get $9 + local.get $4 i32.store16 offset=2 else - local.get $4 + local.get $5 i32.load offset=16 - local.get $4 + local.get $5 i32.load offset=12 i32.eq if - local.get $4 + local.get $5 i32.load offset=20 - local.get $4 + local.get $5 i32.load offset=12 i32.const 3 i32.mul @@ -7993,17 +8878,17 @@ i32.div_s i32.lt_s if (result i32) - local.get $4 + local.get $5 i32.load offset=4 else - local.get $4 + local.get $5 i32.load offset=4 i32.const 1 i32.shl i32.const 1 i32.or end - local.set $10 + local.set $16 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -8013,70 +8898,67 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $1 i64.const 0 i64.store - local.get $2 - local.get $10 + local.get $1 + local.get $16 i32.const 1 i32.add - local.tee $2 + local.tee $1 i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $11 + local.tee $10 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.const 3 i32.shl i32.const 3 i32.div_s - local.tee $16 + local.tee $2 i32.const 3 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $2 + local.tee $1 i32.store offset=4 - local.get $4 + local.get $5 i32.load offset=8 - local.tee $3 - local.get $4 + local.tee $11 + local.get $5 i32.load offset=16 i32.const 3 i32.shl i32.add - local.set $1 - local.get $2 + local.set $12 + local.get $1 local.set $0 - loop $while-continue|02 - local.get $1 - local.get $3 + loop $while-continue|018 + local.get $11 + local.get $12 i32.ne if - local.get $3 + local.get $11 i32.load offset=4 i32.const 1 i32.and i32.eqz if local.get $0 - local.get $3 + local.get $11 i32.load16_s - local.tee $8 + local.tee $13 i32.store16 local.get $0 - local.get $3 + local.get $11 i32.load16_s offset=2 i32.store16 offset=2 local.get $0 - local.get $11 local.get $10 - local.get $8 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + local.get $16 + local.get $13 + i32.extend16_s i32.const -1028477379 i32.mul i32.const 374761395 @@ -8085,22 +8967,22 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $8 - local.get $8 + local.tee $13 + local.get $13 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $8 - local.get $8 + local.tee $13 + local.get $13 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $8 - local.get $8 + local.tee $13 + local.get $13 i32.const 16 i32.shr_u i32.xor @@ -8108,10 +8990,10 @@ i32.const 2 i32.shl i32.add - local.tee $8 + local.tee $13 i32.load i32.store offset=4 - local.get $8 + local.get $13 local.get $0 i32.store local.get $0 @@ -8119,33 +9001,33 @@ i32.add local.set $0 end - local.get $3 + local.get $11 i32.const 8 i32.add - local.set $3 - br $while-continue|02 + local.set $11 + br $while-continue|018 end end - local.get $4 - local.get $11 + local.get $5 + local.get $10 i32.store - local.get $4 - local.get $11 - call $~lib/rt/itcms/__link - local.get $4 + local.get $5 local.get $10 + call $~lib/rt/itcms/__link + local.get $5 + local.get $16 i32.store offset=4 - local.get $4 - local.get $2 + local.get $5 + local.get $1 i32.store offset=8 - local.get $4 - local.get $2 + local.get $5 + local.get $1 call $~lib/rt/itcms/__link - local.get $4 - local.get $16 + local.get $5 + local.get $2 i32.store offset=12 - local.get $4 - local.get $4 + local.get $5 + local.get $5 i32.load offset=20 i32.store offset=16 global.get $~lib/memory/__stack_pointer @@ -8154,70 +9036,70 @@ global.set $~lib/memory/__stack_pointer end global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $5 i32.load offset=8 - local.tee $10 + local.tee $16 i32.store - local.get $4 - local.get $4 + local.get $5 + local.get $5 i32.load offset=16 - local.tee $2 + local.tee $1 i32.const 1 i32.add i32.store offset=16 - local.get $10 - local.get $2 + local.get $16 + local.get $1 i32.const 3 i32.shl i32.add - local.tee $2 - local.get $9 - i32.store16 - local.get $2 - local.get $9 - i32.store16 offset=2 + local.tee $1 local.get $4 + i32.store16 + local.get $1 local.get $4 + i32.store16 offset=2 + local.get $5 + local.get $5 i32.load offset=20 i32.const 1 i32.add i32.store offset=20 - local.get $2 - local.get $4 + local.get $1 + local.get $5 i32.load - local.get $15 - local.get $4 + local.get $6 + local.get $5 i32.load offset=4 i32.and i32.const 2 i32.shl i32.add - local.tee $3 + local.tee $2 i32.load i32.store offset=4 - local.get $3 local.get $2 + local.get $1 i32.store end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $12 - local.get $13 + local.get $9 + local.get $8 i32.const 20 i32.sub - local.tee $3 - local.get $3 + local.tee $2 + local.get $2 call $~lib/map/Map#set - local.get $6 + local.get $3 i32.const 1 i32.add - local.set $6 + local.set $2 br $for-loop|4 end end - local.get $4 + local.get $5 i32.load offset=20 i32.const 100 i32.ne @@ -8229,7 +9111,7 @@ call $~lib/builtins/abort unreachable end - local.get $12 + local.get $9 i32.load offset=20 i32.const 100 i32.ne @@ -8242,19 +9124,82 @@ unreachable end i32.const 0 - local.set $6 + local.set $2 loop $for-loop|6 - local.get $6 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + local.get $2 + i32.extend16_s i32.const 50 i32.lt_s if - local.get $5 - local.get $6 - call $~lib/map/Map#has + local.get $15 + i32.load + local.get $15 + i32.load offset=4 + local.get $2 + i32.extend16_s + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + local.get $1 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + local.get $1 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + local.get $1 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $16 + block $__inlined_func$~lib/map/Map#find20 + loop $while-continue|021 + local.get $16 + if + local.get $16 + i32.load offset=8 + local.tee $1 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $16 + i32.load16_s + local.get $2 + i32.extend16_s + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find20 + local.get $1 + i32.const -2 + i32.and + local.set $16 + br $while-continue|021 + end + end + i32.const 0 + local.set $16 + end + local.get $16 i32.eqz if i32.const 0 @@ -8264,14 +9209,11 @@ call $~lib/builtins/abort unreachable end - local.get $5 - local.get $6 + local.get $15 + local.get $2 call $~lib/map/Map#get - local.get $6 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + local.get $2 + i32.extend16_s i32.const 20 i32.add i32.ne @@ -8283,12 +9225,78 @@ call $~lib/builtins/abort unreachable end - local.get $5 - local.get $6 - call $~lib/map/Map#delete - local.get $5 - local.get $6 - call $~lib/map/Map#has + local.get $15 + local.get $2 + call $~lib/map/Map#delete + local.get $15 + i32.load + local.get $15 + i32.load offset=4 + local.get $2 + i32.extend16_s + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + local.get $1 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + local.get $1 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + local.get $1 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $16 + block $__inlined_func$~lib/map/Map#find23 + loop $while-continue|024 + local.get $16 + if + local.get $16 + i32.load offset=8 + local.tee $1 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $16 + i32.load16_s + local.get $2 + i32.extend16_s + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find23 + local.get $1 + i32.const -2 + i32.and + local.set $16 + br $while-continue|024 + end + end + i32.const 0 + local.set $16 + end + local.get $16 if i32.const 0 i32.const 1568 @@ -8297,14 +9305,14 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $2 i32.const 1 i32.add - local.set $6 + local.set $2 br $for-loop|6 end end - local.get $5 + local.get $15 i32.load offset=20 i32.const 50 i32.ne @@ -8317,19 +9325,82 @@ unreachable end i32.const 0 - local.set $6 + local.set $2 loop $for-loop|8 - local.get $6 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + local.get $2 + i32.extend16_s i32.const 50 i32.lt_s if - local.get $5 - local.get $6 - call $~lib/map/Map#has + local.get $15 + i32.load + local.get $15 + i32.load offset=4 + local.get $2 + i32.extend16_s + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + local.get $1 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + local.get $1 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + local.get $1 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $16 + block $__inlined_func$~lib/map/Map#find26 + loop $while-continue|027 + local.get $16 + if + local.get $16 + i32.load offset=8 + local.tee $1 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $16 + i32.load16_s + local.get $2 + i32.extend16_s + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find26 + local.get $1 + i32.const -2 + i32.and + local.set $16 + br $while-continue|027 + end + end + i32.const 0 + local.set $16 + end + local.get $16 if i32.const 0 i32.const 1568 @@ -8338,19 +9409,82 @@ call $~lib/builtins/abort unreachable end - local.get $5 - local.get $6 - local.get $6 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + local.get $15 + local.get $2 + local.get $2 + i32.extend16_s + local.tee $1 i32.const 10 i32.add call $~lib/map/Map#set - local.get $5 - local.get $6 - call $~lib/map/Map#has + local.get $15 + i32.load + local.get $15 + i32.load offset=4 + local.get $1 + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + local.get $1 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + local.get $1 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + local.get $1 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $16 + block $__inlined_func$~lib/map/Map#find29 + loop $while-continue|030 + local.get $16 + if + local.get $16 + i32.load offset=8 + local.tee $1 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $16 + i32.load16_s + local.get $2 + i32.extend16_s + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find29 + local.get $1 + i32.const -2 + i32.and + local.set $16 + br $while-continue|030 + end + end + i32.const 0 + local.set $16 + end + local.get $16 i32.eqz if i32.const 0 @@ -8360,12 +9494,78 @@ call $~lib/builtins/abort unreachable end - local.get $5 - local.get $6 + local.get $15 + local.get $2 call $~lib/map/Map#delete - local.get $5 - local.get $6 - call $~lib/map/Map#has + local.get $15 + i32.load + local.get $15 + i32.load offset=4 + local.get $2 + i32.extend16_s + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + local.get $1 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + local.get $1 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + local.get $1 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $16 + block $__inlined_func$~lib/map/Map#find32 + loop $while-continue|033 + local.get $16 + if + local.get $16 + i32.load offset=8 + local.tee $1 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $16 + i32.load16_s + local.get $2 + i32.extend16_s + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find32 + local.get $1 + i32.const -2 + i32.and + local.set $16 + br $while-continue|033 + end + end + i32.const 0 + local.set $16 + end + local.get $16 if i32.const 0 i32.const 1568 @@ -8374,14 +9574,14 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $2 i32.const 1 i32.add - local.set $6 + local.set $2 br $for-loop|8 end end - local.get $5 + local.get $15 i32.load offset=20 i32.const 50 i32.ne @@ -8393,9 +9593,9 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $15 call $~lib/map/Map#clear - local.get $5 + local.get $15 i32.load offset=20 if i32.const 0 @@ -21175,10 +22375,7 @@ i32.load local.get $1 local.tee $3 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const -1028477379 i32.mul i32.const 374761394 @@ -21228,10 +22425,9 @@ i32.const 0 else local.get $1 - i32.load8_u + i32.load8_s local.get $3 - i32.const 255 - i32.and + i32.extend8_s i32.eq end br_if $__inlined_func$~lib/map/Map#find @@ -21950,10 +23146,7 @@ i32.load local.get $1 local.tee $3 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const -1028477379 i32.mul i32.const 374761395 @@ -22003,10 +23196,9 @@ i32.const 0 else local.get $1 - i32.load16_u + i32.load16_s local.get $3 - i32.const 65535 - i32.and + i32.extend16_s i32.eq end br_if $__inlined_func$~lib/map/Map#find diff --git a/tests/compiler/std/map.untouched.wat b/tests/compiler/std/map.untouched.wat index 656919223e..fc7e0b30b7 100644 --- a/tests/compiler/std/map.untouched.wat +++ b/tests/compiler/std/map.untouched.wat @@ -2492,10 +2492,7 @@ i32.le_u drop local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s local.set $2 i32.const 1 local.set $1 @@ -2577,10 +2574,7 @@ local.get $3 i32.load8_s local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.eq else i32.const 0 @@ -4505,10 +4499,7 @@ local.get $3 i32.load8_s local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.eq else i32.const 0 @@ -5089,10 +5080,7 @@ local.set $1 loop $for-loop|1 local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const 100 i32.lt_s local.set $3 @@ -5115,10 +5103,7 @@ local.get $1 i32.const 10 local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.add call $~lib/map/Map#set drop @@ -5139,10 +5124,7 @@ call $~lib/map/Map#get i32.const 10 local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.add i32.eq i32.eqz @@ -5178,10 +5160,7 @@ local.set $1 loop $for-loop|3 local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const 100 i32.lt_s local.set $4 @@ -5204,10 +5183,7 @@ call $~lib/map/Map#get i32.const 10 local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.add i32.eq i32.eqz @@ -5223,10 +5199,7 @@ local.get $1 i32.const 20 local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.add call $~lib/map/Map#set drop @@ -5247,10 +5220,7 @@ call $~lib/map/Map#get i32.const 20 local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.add i32.eq i32.eqz @@ -5397,10 +5367,7 @@ local.set $7 loop $for-loop|6 local.get $7 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const 50 i32.lt_s local.set $10 @@ -5423,10 +5390,7 @@ call $~lib/map/Map#get i32.const 20 local.get $7 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.add i32.eq i32.eqz @@ -5479,10 +5443,7 @@ local.set $7 loop $for-loop|8 local.get $7 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const 50 i32.lt_s local.set $9 @@ -5505,10 +5466,7 @@ local.get $7 i32.const 10 local.get $7 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.add call $~lib/map/Map#set drop @@ -6938,10 +6896,7 @@ i32.le_u drop local.get $0 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s local.set $2 i32.const 2 local.set $1 @@ -7023,10 +6978,7 @@ local.get $3 i32.load16_s local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.eq else i32.const 0 @@ -7413,10 +7365,7 @@ local.get $3 i32.load16_s local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.eq else i32.const 0 @@ -7725,10 +7674,7 @@ local.set $1 loop $for-loop|1 local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const 100 i32.lt_s local.set $3 @@ -7751,10 +7697,7 @@ local.get $1 i32.const 10 local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.add call $~lib/map/Map#set drop @@ -7775,10 +7718,7 @@ call $~lib/map/Map#get i32.const 10 local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.add i32.eq i32.eqz @@ -7814,10 +7754,7 @@ local.set $1 loop $for-loop|3 local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const 100 i32.lt_s local.set $4 @@ -7840,10 +7777,7 @@ call $~lib/map/Map#get i32.const 10 local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.add i32.eq i32.eqz @@ -7859,10 +7793,7 @@ local.get $1 i32.const 20 local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.add call $~lib/map/Map#set drop @@ -7883,10 +7814,7 @@ call $~lib/map/Map#get i32.const 20 local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.add i32.eq i32.eqz @@ -8033,10 +7961,7 @@ local.set $7 loop $for-loop|6 local.get $7 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const 50 i32.lt_s local.set $10 @@ -8059,10 +7984,7 @@ call $~lib/map/Map#get i32.const 20 local.get $7 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.add i32.eq i32.eqz @@ -8115,10 +8037,7 @@ local.set $7 loop $for-loop|8 local.get $7 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const 50 i32.lt_s local.set $9 @@ -8141,10 +8060,7 @@ local.get $7 i32.const 10 local.get $7 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.add call $~lib/map/Map#set drop diff --git a/tests/compiler/std/math.optimized.wat b/tests/compiler/std/math.optimized.wat index b729e0bb49..343fd59f3d 100644 --- a/tests/compiler/std/math.optimized.wat +++ b/tests/compiler/std/math.optimized.wat @@ -56565,8 +56565,7 @@ i32.const 1 i32.const 3 call $~lib/math/ipow32 - i32.const 255 - i32.and + i32.extend8_s i32.const 1 i32.ne if @@ -56580,9 +56579,8 @@ i32.const -2 i32.const 3 call $~lib/math/ipow32 - i32.const 255 - i32.and - i32.const 248 + i32.extend8_s + i32.const -8 i32.ne if i32.const 0 diff --git a/tests/compiler/std/math.untouched.wat b/tests/compiler/std/math.untouched.wat index 969746555e..9919a8c6d9 100644 --- a/tests/compiler/std/math.untouched.wat +++ b/tests/compiler/std/math.untouched.wat @@ -59157,10 +59157,7 @@ i32.const 1 i32.const 3 call $~lib/math/ipow32 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const 1 i32.eq i32.eqz @@ -59175,10 +59172,7 @@ i32.const -2 i32.const 3 call $~lib/math/ipow32 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const -8 i32.eq i32.eqz diff --git a/tests/compiler/std/polyfills.untouched.wat b/tests/compiler/std/polyfills.untouched.wat index 6d59b147cc..3cdafecc27 100644 --- a/tests/compiler/std/polyfills.untouched.wat +++ b/tests/compiler/std/polyfills.untouched.wat @@ -86,10 +86,7 @@ i32.and i32.shl local.get $0 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const 8 i32.const 15 i32.and @@ -394,10 +391,7 @@ i32.and i32.shl local.get $0 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const 8 i32.const 15 i32.and @@ -495,15 +489,9 @@ end i32.const 170 call $~lib/polyfills/bswap - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const 170 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.eq i32.eqz if @@ -531,15 +519,9 @@ end i32.const 43707 call $~lib/polyfills/bswap - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const 48042 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.eq i32.eqz if @@ -645,15 +627,9 @@ end i32.const 170 call $~lib/polyfills/bswap16 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const 170 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.eq i32.eqz if @@ -681,15 +657,9 @@ end i32.const 43707 call $~lib/polyfills/bswap16 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const 48042 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.eq i32.eqz if diff --git a/tests/compiler/std/set.optimized.wat b/tests/compiler/std/set.optimized.wat index 0cd40a1fa6..2e71a2df2a 100644 --- a/tests/compiler/std/set.optimized.wat +++ b/tests/compiler/std/set.optimized.wat @@ -1792,84 +1792,6 @@ end end ) - (func $~lib/set/Set#has (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const -1028477379 - i32.mul - i32.const 374761394 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $2 - local.get $2 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $2 - local.get $2 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $2 - local.get $2 - i32.const 16 - i32.shr_u - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - block $__inlined_func$~lib/set/Set#find - loop $while-continue|0 - local.get $0 - if - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $0 - i32.load8_u - local.get $1 - i32.const 255 - i32.and - i32.eq - end - br_if $__inlined_func$~lib/set/Set#find - local.get $2 - i32.const -2 - i32.and - local.set $0 - br $while-continue|0 - end - end - i32.const 0 - local.set $0 - end - local.get $0 - i32.const 0 - i32.ne - ) (func $~lib/set/Set#rehash (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -1950,10 +1872,7 @@ local.get $6 local.get $1 local.get $8 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const -1028477379 i32.mul i32.const 374761394 @@ -2037,10 +1956,7 @@ local.get $0 i32.load local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const -1028477379 i32.mul i32.const 374761394 @@ -2090,10 +2006,9 @@ i32.const 0 else local.get $2 - i32.load8_u + i32.load8_s local.get $1 - i32.const 255 - i32.and + i32.extend8_s i32.eq end br_if $__inlined_func$~lib/set/Set#find @@ -3307,10 +3222,7 @@ i32.load offset=4 local.get $1 local.tee $2 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const -1028477379 i32.mul i32.const 374761394 @@ -3357,10 +3269,9 @@ i32.const 0 else local.get $1 - i32.load8_u + i32.load8_s local.get $2 - i32.const 255 - i32.and + i32.extend8_s i32.eq end br_if $__inlined_func$~lib/set/Set#find @@ -3480,28 +3391,91 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $2 i64.const 0 i64.store - local.get $1 + local.get $2 i32.const 0 i32.store offset=8 - local.get $1 + local.get $2 call $~lib/set/Set#constructor - local.tee $1 + local.tee $2 i32.store loop $for-loop|1 local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const 100 i32.lt_s if - local.get $1 + local.get $2 + i32.load + local.get $2 + i32.load offset=4 local.get $0 - call $~lib/set/Set#has + i32.extend8_s + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + local.get $1 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + local.get $1 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + local.get $1 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 + block $__inlined_func$~lib/set/Set#find + loop $while-continue|0 + local.get $1 + if + local.get $1 + i32.load offset=4 + local.tee $5 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $1 + i32.load8_s + local.get $0 + i32.extend8_s + i32.eq + end + br_if $__inlined_func$~lib/set/Set#find + local.get $5 + i32.const -2 + i32.and + local.set $1 + br $while-continue|0 + end + end + i32.const 0 + local.set $1 + end + local.get $1 if i32.const 0 i32.const 1568 @@ -3510,12 +3484,78 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 local.get $0 call $~lib/set/Set#add - local.get $1 + local.get $2 + i32.load + local.get $2 + i32.load offset=4 local.get $0 - call $~lib/set/Set#has + i32.extend8_s + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + local.get $1 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + local.get $1 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + local.get $1 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 + block $__inlined_func$~lib/set/Set#find1 + loop $while-continue|02 + local.get $1 + if + local.get $1 + i32.load offset=4 + local.tee $5 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $1 + i32.load8_s + local.get $0 + i32.extend8_s + i32.eq + end + br_if $__inlined_func$~lib/set/Set#find1 + local.get $5 + i32.const -2 + i32.and + local.set $1 + br $while-continue|02 + end + end + i32.const 0 + local.set $1 + end + local.get $1 i32.eqz if i32.const 0 @@ -3532,7 +3572,7 @@ br $for-loop|1 end end - local.get $1 + local.get $2 i32.load offset=20 i32.const 100 i32.ne @@ -3548,31 +3588,160 @@ local.set $0 loop $for-loop|3 local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const 100 i32.lt_s if - local.get $1 + local.get $2 + i32.load + local.get $2 + i32.load offset=4 local.get $0 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 14 - i32.const 5 - call $~lib/builtins/abort - unreachable - end + i32.extend8_s + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 local.get $1 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + local.get $1 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + local.get $1 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 + block $__inlined_func$~lib/set/Set#find4 + loop $while-continue|05 + local.get $1 + if + local.get $1 + i32.load offset=4 + local.tee $5 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $1 + i32.load8_s + local.get $0 + i32.extend8_s + i32.eq + end + br_if $__inlined_func$~lib/set/Set#find4 + local.get $5 + i32.const -2 + i32.and + local.set $1 + br $while-continue|05 + end + end + i32.const 0 + local.set $1 + end + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 14 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 local.get $0 call $~lib/set/Set#add - local.get $1 + local.get $2 + i32.load + local.get $2 + i32.load offset=4 local.get $0 - call $~lib/set/Set#has + i32.extend8_s + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + local.get $1 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + local.get $1 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + local.get $1 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 + block $__inlined_func$~lib/set/Set#find7 + loop $while-continue|08 + local.get $1 + if + local.get $1 + i32.load offset=4 + local.tee $5 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $1 + i32.load8_s + local.get $0 + i32.extend8_s + i32.eq + end + br_if $__inlined_func$~lib/set/Set#find7 + local.get $5 + i32.const -2 + i32.and + local.set $1 + br $while-continue|08 + end + end + i32.const 0 + local.set $1 + end + local.get $1 i32.eqz if i32.const 0 @@ -3589,7 +3758,7 @@ br $for-loop|3 end end - local.get $1 + local.get $2 i32.load offset=20 i32.const 100 i32.ne @@ -3616,10 +3785,10 @@ local.tee $7 i32.const 0 i32.store - local.get $1 + local.get $2 i32.load offset=8 local.set $10 - local.get $1 + local.get $2 i32.load offset=16 local.tee $11 local.set $4 @@ -3632,28 +3801,28 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $1 i64.const 0 i64.store - local.get $2 + local.get $1 i32.const 16 i32.const 4 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 0 call $~lib/rt/itcms/__link - local.get $2 + local.get $1 i32.const 0 i32.store offset=4 - local.get $2 + local.get $1 i32.const 0 i32.store offset=8 - local.get $2 + local.get $1 i32.const 0 i32.store offset=12 local.get $4 @@ -3682,19 +3851,19 @@ local.get $5 local.get $8 call $~lib/memory/memory.fill - local.get $2 + local.get $1 local.get $5 i32.store - local.get $2 + local.get $1 local.get $5 call $~lib/rt/itcms/__link - local.get $2 + local.get $1 local.get $5 i32.store offset=4 - local.get $2 + local.get $1 local.get $8 i32.store offset=8 - local.get $2 + local.get $1 local.get $4 i32.store offset=12 global.get $~lib/memory/__stack_pointer @@ -3702,7 +3871,7 @@ i32.add global.set $~lib/memory/__stack_pointer local.get $7 - local.get $2 + local.get $1 i32.store loop $for-loop|0 local.get $6 @@ -3720,7 +3889,7 @@ i32.and i32.eqz if - local.get $2 + local.get $1 local.get $0 local.get $4 i32.load8_s @@ -3737,12 +3906,12 @@ br $for-loop|0 end end - local.get $2 + local.get $1 local.get $0 i32.const 0 i32.const 0 call $~lib/array/ensureCapacity - local.get $2 + local.get $1 local.get $0 i32.store offset=12 global.get $~lib/memory/__stack_pointer @@ -3750,23 +3919,91 @@ i32.add global.set $~lib/memory/__stack_pointer local.get $9 - local.get $2 + local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer call $~lib/set/Set#constructor - local.tee $0 + local.tee $4 i32.store offset=8 loop $for-loop|4 local.get $3 - local.get $2 + local.get $1 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 + local.tee $6 + i32.extend8_s + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.set $0 + local.get $2 + i32.load + local.get $2 + i32.load offset=4 + local.get $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + block $__inlined_func$~lib/set/Set#find11 + loop $while-continue|012 + local.get $0 + if + local.get $0 + i32.load offset=4 + local.tee $7 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $0 + i32.load8_s + local.get $6 + i32.extend8_s + i32.eq + end + br_if $__inlined_func$~lib/set/Set#find11 + local.get $7 + i32.const -2 + i32.and + local.set $0 + br $while-continue|012 + end + end + i32.const 0 + local.set $0 + end + local.get $0 i32.eqz if i32.const 0 @@ -3776,8 +4013,8 @@ call $~lib/builtins/abort unreachable end - local.get $0 - local.get $2 + local.get $4 + local.get $1 local.get $3 call $~lib/array/Array#__get call $~lib/set/Set#add @@ -3788,9 +4025,9 @@ br $for-loop|4 end end - local.get $0 + local.get $4 i32.load offset=20 - local.get $1 + local.get $2 i32.load offset=20 i32.ne if @@ -3805,31 +4042,160 @@ local.set $3 loop $for-loop|6 local.get $3 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const 50 i32.lt_s if - local.get $1 + local.get $2 + i32.load + local.get $2 + i32.load offset=4 local.get $3 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 31 - i32.const 5 - call $~lib/builtins/abort + i32.extend8_s + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + block $__inlined_func$~lib/set/Set#find14 + loop $while-continue|015 + local.get $0 + if + local.get $0 + i32.load offset=4 + local.tee $4 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $0 + i32.load8_s + local.get $3 + i32.extend8_s + i32.eq + end + br_if $__inlined_func$~lib/set/Set#find14 + local.get $4 + i32.const -2 + i32.and + local.set $0 + br $while-continue|015 + end + end + i32.const 0 + local.set $0 + end + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 31 + i32.const 5 + call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 local.get $3 call $~lib/set/Set#delete - local.get $1 + local.get $2 + i32.load + local.get $2 + i32.load offset=4 local.get $3 - call $~lib/set/Set#has + i32.extend8_s + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + block $__inlined_func$~lib/set/Set#find17 + loop $while-continue|018 + local.get $0 + if + local.get $0 + i32.load offset=4 + local.tee $4 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $0 + i32.load8_s + local.get $3 + i32.extend8_s + i32.eq + end + br_if $__inlined_func$~lib/set/Set#find17 + local.get $4 + i32.const -2 + i32.and + local.set $0 + br $while-continue|018 + end + end + i32.const 0 + local.set $0 + end + local.get $0 if i32.const 0 i32.const 1568 @@ -3845,7 +4211,7 @@ br $for-loop|6 end end - local.get $1 + local.get $2 i32.load offset=20 i32.const 50 i32.ne @@ -3861,16 +4227,79 @@ local.set $3 loop $for-loop|8 local.get $3 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const 50 i32.lt_s if - local.get $1 + local.get $2 + i32.load + local.get $2 + i32.load offset=4 local.get $3 - call $~lib/set/Set#has + i32.extend8_s + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + block $__inlined_func$~lib/set/Set#find20 + loop $while-continue|021 + local.get $0 + if + local.get $0 + i32.load offset=4 + local.tee $4 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $0 + i32.load8_s + local.get $3 + i32.extend8_s + i32.eq + end + br_if $__inlined_func$~lib/set/Set#find20 + local.get $4 + i32.const -2 + i32.and + local.set $0 + br $while-continue|021 + end + end + i32.const 0 + local.set $0 + end + local.get $0 if i32.const 0 i32.const 1568 @@ -3879,12 +4308,78 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 local.get $3 call $~lib/set/Set#add - local.get $1 + local.get $2 + i32.load + local.get $2 + i32.load offset=4 local.get $3 - call $~lib/set/Set#has + i32.extend8_s + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + block $__inlined_func$~lib/set/Set#find23 + loop $while-continue|024 + local.get $0 + if + local.get $0 + i32.load offset=4 + local.tee $4 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $0 + i32.load8_s + local.get $3 + i32.extend8_s + i32.eq + end + br_if $__inlined_func$~lib/set/Set#find23 + local.get $4 + i32.const -2 + i32.and + local.set $0 + br $while-continue|024 + end + end + i32.const 0 + local.set $0 + end + local.get $0 i32.eqz if i32.const 0 @@ -3894,12 +4389,78 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 local.get $3 call $~lib/set/Set#delete - local.get $1 + local.get $2 + i32.load + local.get $2 + i32.load offset=4 local.get $3 - call $~lib/set/Set#has + i32.extend8_s + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + block $__inlined_func$~lib/set/Set#find26 + loop $while-continue|027 + local.get $0 + if + local.get $0 + i32.load offset=4 + local.tee $4 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $0 + i32.load8_s + local.get $3 + i32.extend8_s + i32.eq + end + br_if $__inlined_func$~lib/set/Set#find26 + local.get $4 + i32.const -2 + i32.and + local.set $0 + br $while-continue|027 + end + end + i32.const 0 + local.set $0 + end + local.get $0 if i32.const 0 i32.const 1568 @@ -3915,7 +4476,7 @@ br $for-loop|8 end end - local.get $1 + local.get $2 i32.load offset=20 i32.const 50 i32.ne @@ -3927,9 +4488,9 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 call $~lib/set/Set#clear - local.get $1 + local.get $2 i32.load offset=20 if i32.const 0 @@ -5571,84 +6132,6 @@ call $~lib/builtins/abort unreachable ) - (func $~lib/set/Set#has (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const -1028477379 - i32.mul - i32.const 374761395 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $2 - local.get $2 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $2 - local.get $2 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $2 - local.get $2 - i32.const 16 - i32.shr_u - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - block $__inlined_func$~lib/set/Set#find - loop $while-continue|0 - local.get $0 - if - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $0 - i32.load16_u - local.get $1 - i32.const 65535 - i32.and - i32.eq - end - br_if $__inlined_func$~lib/set/Set#find - local.get $2 - i32.const -2 - i32.and - local.set $0 - br $while-continue|0 - end - end - i32.const 0 - local.set $0 - end - local.get $0 - i32.const 0 - i32.ne - ) (func $~lib/set/Set#rehash (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -5729,10 +6212,7 @@ local.get $6 local.get $1 local.get $8 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const -1028477379 i32.mul i32.const 374761395 @@ -5816,10 +6296,7 @@ local.get $0 i32.load local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const -1028477379 i32.mul i32.const 374761395 @@ -5869,10 +6346,9 @@ i32.const 0 else local.get $2 - i32.load16_u + i32.load16_s local.get $1 - i32.const 65535 - i32.and + i32.extend16_s i32.eq end br_if $__inlined_func$~lib/set/Set#find @@ -6027,10 +6503,7 @@ i32.load offset=4 local.get $1 local.tee $2 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const -1028477379 i32.mul i32.const 374761395 @@ -6077,10 +6550,9 @@ i32.const 0 else local.get $1 - i32.load16_u + i32.load16_s local.get $2 - i32.const 65535 - i32.and + i32.extend16_s i32.eq end br_if $__inlined_func$~lib/set/Set#find @@ -6169,28 +6641,91 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $2 i64.const 0 i64.store - local.get $1 + local.get $2 i32.const 0 i32.store offset=8 - local.get $1 + local.get $2 call $~lib/set/Set#constructor - local.tee $1 + local.tee $2 i32.store loop $for-loop|1 local.get $0 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const 100 i32.lt_s if - local.get $1 + local.get $2 + i32.load + local.get $2 + i32.load offset=4 local.get $0 - call $~lib/set/Set#has + i32.extend16_s + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + local.get $1 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + local.get $1 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + local.get $1 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 + block $__inlined_func$~lib/set/Set#find + loop $while-continue|0 + local.get $1 + if + local.get $1 + i32.load offset=4 + local.tee $5 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $1 + i32.load16_s + local.get $0 + i32.extend16_s + i32.eq + end + br_if $__inlined_func$~lib/set/Set#find + local.get $5 + i32.const -2 + i32.and + local.set $1 + br $while-continue|0 + end + end + i32.const 0 + local.set $1 + end + local.get $1 if i32.const 0 i32.const 1568 @@ -6199,12 +6734,78 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 local.get $0 call $~lib/set/Set#add - local.get $1 + local.get $2 + i32.load + local.get $2 + i32.load offset=4 local.get $0 - call $~lib/set/Set#has + i32.extend16_s + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + local.get $1 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + local.get $1 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + local.get $1 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 + block $__inlined_func$~lib/set/Set#find1 + loop $while-continue|02 + local.get $1 + if + local.get $1 + i32.load offset=4 + local.tee $5 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $1 + i32.load16_s + local.get $0 + i32.extend16_s + i32.eq + end + br_if $__inlined_func$~lib/set/Set#find1 + local.get $5 + i32.const -2 + i32.and + local.set $1 + br $while-continue|02 + end + end + i32.const 0 + local.set $1 + end + local.get $1 i32.eqz if i32.const 0 @@ -6221,7 +6822,7 @@ br $for-loop|1 end end - local.get $1 + local.get $2 i32.load offset=20 i32.const 100 i32.ne @@ -6237,31 +6838,160 @@ local.set $0 loop $for-loop|3 local.get $0 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const 100 i32.lt_s if - local.get $1 + local.get $2 + i32.load + local.get $2 + i32.load offset=4 local.get $0 - call $~lib/set/Set#has + i32.extend16_s + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + local.get $1 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + local.get $1 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + local.get $1 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 + block $__inlined_func$~lib/set/Set#find4 + loop $while-continue|05 + local.get $1 + if + local.get $1 + i32.load offset=4 + local.tee $5 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $1 + i32.load16_s + local.get $0 + i32.extend16_s + i32.eq + end + br_if $__inlined_func$~lib/set/Set#find4 + local.get $5 + i32.const -2 + i32.and + local.set $1 + br $while-continue|05 + end + end + i32.const 0 + local.set $1 + end + local.get $1 i32.eqz if i32.const 0 - i32.const 1568 - i32.const 14 - i32.const 5 - call $~lib/builtins/abort - unreachable + i32.const 1568 + i32.const 14 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $0 + call $~lib/set/Set#add + local.get $2 + i32.load + local.get $2 + i32.load offset=4 + local.get $0 + i32.extend16_s + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + local.get $1 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + local.get $1 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + local.get $1 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 + block $__inlined_func$~lib/set/Set#find7 + loop $while-continue|08 + local.get $1 + if + local.get $1 + i32.load offset=4 + local.tee $5 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $1 + i32.load16_s + local.get $0 + i32.extend16_s + i32.eq + end + br_if $__inlined_func$~lib/set/Set#find7 + local.get $5 + i32.const -2 + i32.and + local.set $1 + br $while-continue|08 + end + end + i32.const 0 + local.set $1 end local.get $1 - local.get $0 - call $~lib/set/Set#add - local.get $1 - local.get $0 - call $~lib/set/Set#has i32.eqz if i32.const 0 @@ -6278,7 +7008,7 @@ br $for-loop|3 end end - local.get $1 + local.get $2 i32.load offset=20 i32.const 100 i32.ne @@ -6305,10 +7035,10 @@ local.tee $7 i32.const 0 i32.store - local.get $1 + local.get $2 i32.load offset=8 local.set $10 - local.get $1 + local.get $2 i32.load offset=16 local.tee $11 local.set $4 @@ -6321,28 +7051,28 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $1 i64.const 0 i64.store - local.get $2 + local.get $1 i32.const 16 i32.const 8 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 0 call $~lib/rt/itcms/__link - local.get $2 + local.get $1 i32.const 0 i32.store offset=4 - local.get $2 + local.get $1 i32.const 0 i32.store offset=8 - local.get $2 + local.get $1 i32.const 0 i32.store offset=12 local.get $4 @@ -6373,19 +7103,19 @@ local.get $5 local.get $8 call $~lib/memory/memory.fill - local.get $2 + local.get $1 local.get $5 i32.store - local.get $2 + local.get $1 local.get $5 call $~lib/rt/itcms/__link - local.get $2 + local.get $1 local.get $5 i32.store offset=4 - local.get $2 + local.get $1 local.get $8 i32.store offset=8 - local.get $2 + local.get $1 local.get $4 i32.store offset=12 global.get $~lib/memory/__stack_pointer @@ -6393,7 +7123,7 @@ i32.add global.set $~lib/memory/__stack_pointer local.get $7 - local.get $2 + local.get $1 i32.store loop $for-loop|0 local.get $6 @@ -6411,7 +7141,7 @@ i32.and i32.eqz if - local.get $2 + local.get $1 local.get $0 local.get $4 i32.load16_s @@ -6428,12 +7158,12 @@ br $for-loop|0 end end - local.get $2 + local.get $1 local.get $0 i32.const 1 i32.const 0 call $~lib/array/ensureCapacity - local.get $2 + local.get $1 local.get $0 i32.store offset=12 global.get $~lib/memory/__stack_pointer @@ -6441,23 +7171,91 @@ i32.add global.set $~lib/memory/__stack_pointer local.get $9 - local.get $2 + local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer call $~lib/set/Set#constructor - local.tee $0 + local.tee $4 i32.store offset=8 loop $for-loop|4 local.get $3 - local.get $2 + local.get $1 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 + local.tee $6 + i32.extend16_s + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.set $0 + local.get $2 + i32.load + local.get $2 + i32.load offset=4 + local.get $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + block $__inlined_func$~lib/set/Set#find11 + loop $while-continue|012 + local.get $0 + if + local.get $0 + i32.load offset=4 + local.tee $7 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $0 + i32.load16_s + local.get $6 + i32.extend16_s + i32.eq + end + br_if $__inlined_func$~lib/set/Set#find11 + local.get $7 + i32.const -2 + i32.and + local.set $0 + br $while-continue|012 + end + end + i32.const 0 + local.set $0 + end + local.get $0 i32.eqz if i32.const 0 @@ -6467,8 +7265,8 @@ call $~lib/builtins/abort unreachable end - local.get $0 - local.get $2 + local.get $4 + local.get $1 local.get $3 call $~lib/array/Array#__get call $~lib/set/Set#add @@ -6479,9 +7277,9 @@ br $for-loop|4 end end - local.get $0 + local.get $4 i32.load offset=20 - local.get $1 + local.get $2 i32.load offset=20 i32.ne if @@ -6496,31 +7294,160 @@ local.set $3 loop $for-loop|6 local.get $3 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const 50 i32.lt_s if - local.get $1 + local.get $2 + i32.load + local.get $2 + i32.load offset=4 local.get $3 - call $~lib/set/Set#has + i32.extend16_s + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + block $__inlined_func$~lib/set/Set#find14 + loop $while-continue|015 + local.get $0 + if + local.get $0 + i32.load offset=4 + local.tee $4 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $0 + i32.load16_s + local.get $3 + i32.extend16_s + i32.eq + end + br_if $__inlined_func$~lib/set/Set#find14 + local.get $4 + i32.const -2 + i32.and + local.set $0 + br $while-continue|015 + end + end + i32.const 0 + local.set $0 + end + local.get $0 i32.eqz if i32.const 0 - i32.const 1568 - i32.const 31 - i32.const 5 - call $~lib/builtins/abort - unreachable + i32.const 1568 + i32.const 31 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $3 + call $~lib/set/Set#delete + local.get $2 + i32.load + local.get $2 + i32.load offset=4 + local.get $3 + i32.extend16_s + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + block $__inlined_func$~lib/set/Set#find17 + loop $while-continue|018 + local.get $0 + if + local.get $0 + i32.load offset=4 + local.tee $4 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $0 + i32.load16_s + local.get $3 + i32.extend16_s + i32.eq + end + br_if $__inlined_func$~lib/set/Set#find17 + local.get $4 + i32.const -2 + i32.and + local.set $0 + br $while-continue|018 + end + end + i32.const 0 + local.set $0 end - local.get $1 - local.get $3 - call $~lib/set/Set#delete - local.get $1 - local.get $3 - call $~lib/set/Set#has + local.get $0 if i32.const 0 i32.const 1568 @@ -6536,7 +7463,7 @@ br $for-loop|6 end end - local.get $1 + local.get $2 i32.load offset=20 i32.const 50 i32.ne @@ -6552,16 +7479,79 @@ local.set $3 loop $for-loop|8 local.get $3 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const 50 i32.lt_s if - local.get $1 + local.get $2 + i32.load + local.get $2 + i32.load offset=4 local.get $3 - call $~lib/set/Set#has + i32.extend16_s + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + block $__inlined_func$~lib/set/Set#find20 + loop $while-continue|021 + local.get $0 + if + local.get $0 + i32.load offset=4 + local.tee $4 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $0 + i32.load16_s + local.get $3 + i32.extend16_s + i32.eq + end + br_if $__inlined_func$~lib/set/Set#find20 + local.get $4 + i32.const -2 + i32.and + local.set $0 + br $while-continue|021 + end + end + i32.const 0 + local.set $0 + end + local.get $0 if i32.const 0 i32.const 1568 @@ -6570,12 +7560,78 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 local.get $3 call $~lib/set/Set#add - local.get $1 + local.get $2 + i32.load + local.get $2 + i32.load offset=4 local.get $3 - call $~lib/set/Set#has + i32.extend16_s + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + block $__inlined_func$~lib/set/Set#find23 + loop $while-continue|024 + local.get $0 + if + local.get $0 + i32.load offset=4 + local.tee $4 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $0 + i32.load16_s + local.get $3 + i32.extend16_s + i32.eq + end + br_if $__inlined_func$~lib/set/Set#find23 + local.get $4 + i32.const -2 + i32.and + local.set $0 + br $while-continue|024 + end + end + i32.const 0 + local.set $0 + end + local.get $0 i32.eqz if i32.const 0 @@ -6585,12 +7641,78 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 local.get $3 call $~lib/set/Set#delete - local.get $1 + local.get $2 + i32.load + local.get $2 + i32.load offset=4 local.get $3 - call $~lib/set/Set#has + i32.extend16_s + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + block $__inlined_func$~lib/set/Set#find26 + loop $while-continue|027 + local.get $0 + if + local.get $0 + i32.load offset=4 + local.tee $4 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $0 + i32.load16_s + local.get $3 + i32.extend16_s + i32.eq + end + br_if $__inlined_func$~lib/set/Set#find26 + local.get $4 + i32.const -2 + i32.and + local.set $0 + br $while-continue|027 + end + end + i32.const 0 + local.set $0 + end + local.get $0 if i32.const 0 i32.const 1568 @@ -6606,7 +7728,7 @@ br $for-loop|8 end end - local.get $1 + local.get $2 i32.load offset=20 i32.const 50 i32.ne @@ -6618,9 +7740,9 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 call $~lib/set/Set#clear - local.get $1 + local.get $2 i32.load offset=20 if i32.const 0 diff --git a/tests/compiler/std/set.untouched.wat b/tests/compiler/std/set.untouched.wat index 78384794da..c87a7d036f 100644 --- a/tests/compiler/std/set.untouched.wat +++ b/tests/compiler/std/set.untouched.wat @@ -2487,10 +2487,7 @@ i32.le_u drop local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s local.set $2 i32.const 1 local.set $1 @@ -2572,10 +2569,7 @@ local.get $3 i32.load8_s local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.eq else i32.const 0 @@ -4472,10 +4466,7 @@ local.set $1 loop $for-loop|1 local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const 100 i32.lt_s local.set $3 @@ -4534,10 +4525,7 @@ local.set $1 loop $for-loop|3 local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const 100 i32.lt_s local.set $4 @@ -4656,10 +4644,7 @@ local.set $5 loop $for-loop|6 local.get $5 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const 50 i32.lt_s local.set $7 @@ -4718,10 +4703,7 @@ local.set $5 loop $for-loop|8 local.get $5 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const 50 i32.lt_s local.set $8 @@ -5840,10 +5822,7 @@ i32.le_u drop local.get $0 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s local.set $2 i32.const 2 local.set $1 @@ -5925,10 +5904,7 @@ local.get $3 i32.load16_s local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.eq else i32.const 0 @@ -6432,10 +6408,7 @@ local.set $1 loop $for-loop|1 local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const 100 i32.lt_s local.set $3 @@ -6494,10 +6467,7 @@ local.set $1 loop $for-loop|3 local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const 100 i32.lt_s local.set $4 @@ -6616,10 +6586,7 @@ local.set $5 loop $for-loop|6 local.get $5 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const 50 i32.lt_s local.set $7 @@ -6678,10 +6645,7 @@ local.set $5 loop $for-loop|8 local.get $5 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const 50 i32.lt_s local.set $8 diff --git a/tests/compiler/std/typedarray.optimized.wat b/tests/compiler/std/typedarray.optimized.wat index 11092c65c0..f87db6d9ce 100644 --- a/tests/compiler/std/typedarray.optimized.wat +++ b/tests/compiler/std/typedarray.optimized.wat @@ -1,6 +1,6 @@ (module - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $none_=>_none (func)) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_=>_none (func (param i32 i32))) @@ -626,7 +626,7 @@ (data (i32.const 15420) "B\08\00\00\00\00\00\00\02\t") (data (i32.const 15788) "\02\19\00\00\00\00\00\00\02\1a\00\00\00\00\00\00B\00\00\00\00\00\00\00\82\08\00\00\00\00\00\00\82\00\00\00\00\00\00\00\02\01\00\00\00\00\00\00\02\n\00\00\00\00\00\00\02\02") (table $0 144 funcref) - (elem $0 (i32.const 1) $~lib/util/sort/COMPARATOR~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Uint16Array,u16>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Uint32Array,u32>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Uint64Array,u64>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Float64Array,f64>~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $std/typedarray/testArraySort<~lib/typedarray/Int8Array,i8>~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $std/typedarray/testArraySort<~lib/typedarray/Uint8Array,u8>~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $std/typedarray/testArraySort<~lib/typedarray/Uint8Array,u8>~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $std/typedarray/testArraySort<~lib/typedarray/Int16Array,i16>~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $std/typedarray/testArraySort<~lib/typedarray/Uint16Array,u16>~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $std/typedarray/testArraySort<~lib/typedarray/Int32Array,i32>~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $std/typedarray/testArraySort<~lib/typedarray/Uint32Array,u32>~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $std/typedarray/testArraySort<~lib/typedarray/Int64Array,i64>~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $std/typedarray/testArraySort<~lib/typedarray/Uint64Array,u64>~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $std/typedarray/testArraySort<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArraySort<~lib/typedarray/Float64Array,f64>~anonymous|0) + (elem $0 (i32.const 1) $~lib/util/sort/COMPARATOR~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Uint16Array,u16>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Uint32Array,u32>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Uint64Array,u64>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint16Array,u16>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Uint16Array,u16>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Float64Array,f64>~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $std/typedarray/testArraySort<~lib/typedarray/Int8Array,i8>~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $std/typedarray/testArraySort<~lib/typedarray/Uint8Array,u8>~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $std/typedarray/testArraySort<~lib/typedarray/Uint8Array,u8>~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $std/typedarray/testArraySort<~lib/typedarray/Int16Array,i16>~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $std/typedarray/testArraySort<~lib/typedarray/Uint16Array,u16>~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $std/typedarray/testArraySort<~lib/typedarray/Int32Array,i32>~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $std/typedarray/testArraySort<~lib/typedarray/Uint32Array,u32>~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $std/typedarray/testArraySort<~lib/typedarray/Int64Array,i64>~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $std/typedarray/testArraySort<~lib/typedarray/Uint64Array,u64>~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $std/typedarray/testArraySort<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArraySort<~lib/typedarray/Float64Array,f64>~anonymous|0) (export "memory" (memory $0)) (start $~start) (func $~lib/rt/itcms/visitRoots @@ -5520,10 +5520,7 @@ ) (func $std/typedarray/testArrayFilter<~lib/typedarray/Int8Array,i8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const 2 i32.gt_s ) @@ -5574,10 +5571,7 @@ ) (func $std/typedarray/testArrayFilter<~lib/typedarray/Int16Array,i16>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const 2 i32.gt_s ) @@ -5619,26 +5613,48 @@ f64.gt ) (func $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.extend8_s + i32.const 2 + i32.eq + ) + (func $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.extend8_s + i32.eqz + ) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 255 i32.and i32.const 2 i32.eq ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 255 i32.and i32.eqz ) (func $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.extend16_s + i32.const 2 + i32.eq + ) + (func $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.extend16_s + i32.eqz + ) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 65535 i32.and i32.const 2 i32.eq ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 65535 i32.and @@ -5683,6 +5699,12 @@ f64.eq ) (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.extend8_s + i32.const 4 + i32.eq + ) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 255 i32.and @@ -5690,6 +5712,12 @@ i32.eq ) (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.extend16_s + i32.const 4 + i32.eq + ) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint16Array,u16>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 65535 i32.and @@ -5718,12 +5746,10 @@ ) (func $std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 1 - i32.and + i32.extend8_s + i32.const 2 + i32.rem_s + i32.extend8_s i32.eqz ) (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) @@ -5734,12 +5760,10 @@ ) (func $std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const 1 - i32.and + i32.extend16_s + i32.const 2 + i32.rem_s + i32.extend16_s i32.eqz ) (func $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64>~anonymous|0 (param $0 i64) (param $1 i32) (param $2 i32) (result i32) @@ -6095,10 +6119,7 @@ i32.const 7024 local.get $1 call $~lib/array/Array#__get - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s call $~lib/typedarray/Int8Array#__set local.get $1 i32.const 1 @@ -6133,7 +6154,7 @@ local.tee $0 local.get $3 i32.add - i32.load8_u + i32.load8_s i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.0 local.get $0 @@ -6181,7 +6202,7 @@ local.tee $0 local.get $3 i32.add - i32.load8_u + i32.load8_s i32.const 11 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.01 @@ -6232,8 +6253,8 @@ local.tee $0 local.get $3 i32.add - i32.load8_u - i32.const 255 + i32.load8_s + i32.const -1 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.04 local.get $0 @@ -6283,7 +6304,7 @@ local.tee $0 local.get $3 i32.add - i32.load8_u + i32.load8_s i32.const 3 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.07 @@ -6334,7 +6355,7 @@ local.tee $0 local.get $3 i32.add - i32.load8_u + i32.load8_s i32.const 3 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.010 @@ -6385,7 +6406,7 @@ local.tee $0 local.get $3 i32.add - i32.load8_u + i32.load8_s i32.const 3 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.013 @@ -6436,7 +6457,7 @@ local.tee $0 local.get $3 i32.add - i32.load8_u + i32.load8_s i32.const 3 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.016 @@ -6487,7 +6508,7 @@ local.tee $0 local.get $3 i32.add - i32.load8_u + i32.load8_s i32.const 1 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.019 @@ -6545,7 +6566,7 @@ local.get $0 local.get $1 i32.add - i32.load8_u + i32.load8_s i32.const 1 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.022 @@ -6611,7 +6632,7 @@ local.get $1 local.get $2 i32.add - i32.load8_u + i32.load8_s i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.0 local.get $2 @@ -6673,7 +6694,7 @@ local.get $1 local.get $2 i32.add - i32.load8_u + i32.load8_s i32.const 11 i32.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.05 @@ -6738,8 +6759,8 @@ local.get $1 local.get $2 i32.add - i32.load8_u - i32.const 255 + i32.load8_s + i32.const -1 i32.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.011 local.get $2 @@ -6803,7 +6824,7 @@ local.get $1 local.get $2 i32.add - i32.load8_u + i32.load8_s i32.const 3 i32.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.017 @@ -6856,7 +6877,7 @@ local.get $1 local.get $2 i32.add - i32.load8_u + i32.load8_s i32.const 3 i32.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.019 @@ -6909,7 +6930,7 @@ local.get $1 local.get $2 i32.add - i32.load8_u + i32.load8_s i32.const 3 i32.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.026 @@ -6962,7 +6983,7 @@ local.get $1 local.get $2 i32.add - i32.load8_u + i32.load8_s i32.const 3 i32.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.029 @@ -7015,7 +7036,7 @@ local.get $1 local.get $2 i32.add - i32.load8_u + i32.load8_s i32.const 1 i32.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.032 @@ -7063,7 +7084,7 @@ local.get $1 local.get $2 i32.add - i32.load8_u + i32.load8_s i32.const 1 i32.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.035 @@ -7111,7 +7132,7 @@ local.get $1 local.get $2 i32.add - i32.load8_u + i32.load8_s i32.const 1 i32.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.038 @@ -7169,7 +7190,7 @@ local.tee $0 local.get $2 i32.add - i32.load8_u + i32.load8_s i32.const 3 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.041 @@ -7220,7 +7241,7 @@ local.tee $0 local.get $2 i32.add - i32.load8_u + i32.load8_s i32.const 4 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.044 @@ -7269,7 +7290,7 @@ local.tee $0 local.get $2 i32.add - i32.load8_u + i32.load8_s i32.const 5 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.047 @@ -7320,7 +7341,7 @@ local.tee $0 local.get $2 i32.add - i32.load8_u + i32.load8_s i32.const 9 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.050 @@ -7371,7 +7392,7 @@ local.tee $0 local.get $2 i32.add - i32.load8_u + i32.load8_s i32.const 10 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.053 @@ -7422,7 +7443,7 @@ local.tee $0 local.get $2 i32.add - i32.load8_u + i32.load8_s i32.const 11 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.056 @@ -7473,7 +7494,7 @@ local.tee $0 local.get $2 i32.add - i32.load8_u + i32.load8_s i32.const 5 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.059 @@ -7524,7 +7545,7 @@ local.tee $0 local.get $2 i32.add - i32.load8_u + i32.load8_s i32.const 5 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.062 @@ -10610,10 +10631,7 @@ i32.const 7024 local.get $1 call $~lib/array/Array#__get - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s call $~lib/typedarray/Int16Array#__set local.get $1 i32.const 1 @@ -10651,7 +10669,7 @@ i32.const 1 i32.shl i32.add - i32.load16_u + i32.load16_s i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0 local.get $0 @@ -10702,7 +10720,7 @@ i32.const 1 i32.shl i32.add - i32.load16_u + i32.load16_s i32.const 11 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.01 @@ -10756,8 +10774,8 @@ i32.const 1 i32.shl i32.add - i32.load16_u - i32.const 65535 + i32.load16_s + i32.const -1 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.04 local.get $0 @@ -10810,7 +10828,7 @@ i32.const 1 i32.shl i32.add - i32.load16_u + i32.load16_s i32.const 3 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.07 @@ -10865,7 +10883,7 @@ i32.const 1 i32.shl i32.add - i32.load16_u + i32.load16_s i32.const 3 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.010 @@ -10920,7 +10938,7 @@ i32.const 1 i32.shl i32.add - i32.load16_u + i32.load16_s i32.const 3 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.013 @@ -10975,7 +10993,7 @@ i32.const 1 i32.shl i32.add - i32.load16_u + i32.load16_s i32.const 3 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.016 @@ -11030,7 +11048,7 @@ i32.const 1 i32.shl i32.add - i32.load16_u + i32.load16_s i32.const 1 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.019 @@ -11092,7 +11110,7 @@ i32.const 1 i32.shl i32.add - i32.load16_u + i32.load16_s i32.const 1 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.022 @@ -11164,7 +11182,7 @@ i32.const 1 i32.shl i32.add - i32.load16_u + i32.load16_s i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0 local.get $2 @@ -11232,7 +11250,7 @@ i32.const 1 i32.shl i32.add - i32.load16_u + i32.load16_s i32.const 11 i32.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.05 @@ -11303,8 +11321,8 @@ i32.const 1 i32.shl i32.add - i32.load16_u - i32.const 65535 + i32.load16_s + i32.const -1 i32.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.011 local.get $2 @@ -11374,7 +11392,7 @@ i32.const 1 i32.shl i32.add - i32.load16_u + i32.load16_s i32.const 3 i32.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.017 @@ -11431,7 +11449,7 @@ i32.const 1 i32.shl i32.add - i32.load16_u + i32.load16_s i32.const 3 i32.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.019 @@ -11488,7 +11506,7 @@ i32.const 1 i32.shl i32.add - i32.load16_u + i32.load16_s i32.const 3 i32.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.026 @@ -11545,7 +11563,7 @@ i32.const 1 i32.shl i32.add - i32.load16_u + i32.load16_s i32.const 3 i32.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.029 @@ -11602,7 +11620,7 @@ i32.const 1 i32.shl i32.add - i32.load16_u + i32.load16_s i32.const 1 i32.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.032 @@ -11654,7 +11672,7 @@ i32.const 1 i32.shl i32.add - i32.load16_u + i32.load16_s i32.const 1 i32.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.035 @@ -11706,7 +11724,7 @@ i32.const 1 i32.shl i32.add - i32.load16_u + i32.load16_s i32.const 1 i32.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.038 @@ -11766,7 +11784,7 @@ i32.const 1 i32.shl i32.add - i32.load16_u + i32.load16_s i32.const 3 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.041 @@ -11820,7 +11838,7 @@ i32.const 1 i32.shl i32.add - i32.load16_u + i32.load16_s i32.const 4 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.044 @@ -11872,7 +11890,7 @@ i32.const 1 i32.shl i32.add - i32.load16_u + i32.load16_s i32.const 5 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.047 @@ -11926,7 +11944,7 @@ i32.const 1 i32.shl i32.add - i32.load16_u + i32.load16_s i32.const 9 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.050 @@ -11980,7 +11998,7 @@ i32.const 1 i32.shl i32.add - i32.load16_u + i32.load16_s i32.const 10 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.053 @@ -12034,7 +12052,7 @@ i32.const 1 i32.shl i32.add - i32.load16_u + i32.load16_s i32.const 11 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.056 @@ -12089,7 +12107,7 @@ i32.const 1 i32.shl i32.add - i32.load16_u + i32.load16_s i32.const 5 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.059 @@ -12144,7 +12162,7 @@ i32.const 1 i32.shl i32.add - i32.load16_u + i32.load16_s i32.const 5 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.062 @@ -23566,10 +23584,7 @@ (local $2 i32) (local $3 i32) local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const 0 i32.lt_s local.tee $2 @@ -23583,10 +23598,7 @@ local.set $1 end local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const 10 i32.lt_u if @@ -23596,10 +23608,7 @@ i32.shl i32.add local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const 48 i32.or i32.store16 @@ -23609,10 +23618,7 @@ return end local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s local.tee $3 local.tee $1 i32.const 100000 @@ -24174,10 +24180,7 @@ (local $2 i32) (local $3 i32) local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const 0 i32.lt_s local.tee $2 @@ -24191,10 +24194,7 @@ local.set $1 end local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const 10 i32.lt_u if @@ -24204,10 +24204,7 @@ i32.shl i32.add local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const 48 i32.or i32.store16 @@ -24217,10 +24214,7 @@ return end local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s local.tee $3 local.tee $1 i32.const 100000 @@ -29239,29 +29233,17 @@ ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.sub ) (func $std/typedarray/testArraySort<~lib/typedarray/Int8Array,i8>~anonymous|0 (param $0 i32) (param $1 i32) (result i32) local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s local.tee $1 local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s local.tee $0 i32.gt_s local.get $0 @@ -30083,29 +30065,17 @@ ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) local.get $0 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.sub ) (func $std/typedarray/testArraySort<~lib/typedarray/Int16Array,i16>~anonymous|0 (param $0 i32) (param $1 i32) (result i32) local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s local.tee $1 local.get $0 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s local.tee $0 i32.gt_s local.get $0 @@ -35241,6 +35211,76 @@ unreachable ) (func $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + if + i32.const 32336 + i32.const 32384 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $3 + i32.const 0 + i32.store + local.get $3 + i32.const 6448 + i32.store + local.get $0 + i32.extend8_s + i32.const 6448 + local.get $1 + call $~lib/array/Array#__get + i32.extend8_s + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 513 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.get $std/typedarray/forEachCallCount + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 514 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + global.get $std/typedarray/forEachSelf + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 515 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $std/typedarray/forEachCallCount + i32.const 1 + i32.add + global.set $std/typedarray/forEachCallCount + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint8Array,u8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) global.get $~lib/memory/__stack_pointer i32.const 4 @@ -35313,6 +35353,76 @@ global.set $~lib/memory/__stack_pointer ) (func $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + if + i32.const 32336 + i32.const 32384 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $3 + i32.const 0 + i32.store + local.get $3 + i32.const 6448 + i32.store + local.get $0 + i32.extend16_s + i32.const 6448 + local.get $1 + call $~lib/array/Array#__get + i32.extend16_s + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 513 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.get $std/typedarray/forEachCallCount + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 514 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + global.get $std/typedarray/forEachSelf + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 515 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $std/typedarray/forEachCallCount + i32.const 1 + i32.add + global.set $std/typedarray/forEachCallCount + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint16Array,u16>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) global.get $~lib/memory/__stack_pointer i32.const 4 @@ -35718,20 +35828,14 @@ i32.const 6912 local.get $0 call $~lib/array/Array#__get - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s call $~lib/typedarray/Int8Array#__set local.get $5 local.get $0 i32.const 6912 local.get $0 call $~lib/array/Array#__get - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s call $~lib/typedarray/Int8Array#__set local.get $0 i32.const 1 @@ -35799,10 +35903,7 @@ local.get $0 i32.sub call $~lib/array/Array#__get - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.ne if i32.const 0 @@ -36514,20 +36615,14 @@ i32.const 6912 local.get $0 call $~lib/array/Array#__get - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s call $~lib/typedarray/Int16Array#__set local.get $5 local.get $0 i32.const 6912 local.get $0 call $~lib/array/Array#__get - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s call $~lib/typedarray/Int16Array#__set local.get $0 i32.const 1 @@ -36601,10 +36696,7 @@ local.get $0 i32.sub call $~lib/array/Array#__get - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.ne if i32.const 0 @@ -45600,8 +45692,7 @@ block $folding-inner2 block $folding-inner1 local.get $9 - i32.const 255 - i32.and + i32.extend8_s i32.const 6 i32.ne br_if $folding-inner1 @@ -45839,8 +45930,7 @@ end end local.get $9 - i32.const 65535 - i32.and + i32.extend16_s i32.const 6 i32.ne br_if $folding-inner1 @@ -47042,8 +47132,7 @@ end end local.get $0 - i32.const 255 - i32.and + i32.extend8_s i32.const 6 i32.ne br_if $folding-inner5 @@ -47283,8 +47372,7 @@ end end local.get $0 - i32.const 65535 - i32.and + i32.extend16_s i32.const 6 i32.ne br_if $folding-inner5 @@ -53647,10 +53735,7 @@ i32.const 6448 i32.const 0 call $~lib/array/Array#__get - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s call $~lib/typedarray/Int8Array#__set global.get $~lib/memory/__stack_pointer i32.const 6448 @@ -53660,10 +53745,7 @@ i32.const 6448 i32.const 1 call $~lib/array/Array#__get - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s call $~lib/typedarray/Int8Array#__set global.get $~lib/memory/__stack_pointer i32.const 6448 @@ -53673,10 +53755,7 @@ i32.const 6448 i32.const 2 call $~lib/array/Array#__get - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s call $~lib/typedarray/Int8Array#__set global.get $~lib/memory/__stack_pointer i32.const 6496 @@ -53950,10 +54029,7 @@ i32.const 6448 i32.const 0 call $~lib/array/Array#__get - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s call $~lib/typedarray/Int16Array#__set global.get $~lib/memory/__stack_pointer i32.const 6448 @@ -53963,10 +54039,7 @@ i32.const 6448 i32.const 1 call $~lib/array/Array#__get - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s call $~lib/typedarray/Int16Array#__set global.get $~lib/memory/__stack_pointer i32.const 6448 @@ -53976,10 +54049,7 @@ i32.const 6448 i32.const 2 call $~lib/array/Array#__get - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s call $~lib/typedarray/Int16Array#__set global.get $~lib/memory/__stack_pointer i32.const 6592 @@ -56092,10 +56162,7 @@ i32.const 10224 local.get $2 call $~lib/array/Array#__get - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s call $~lib/typedarray/Int8Array#__set local.get $2 i32.const 1 @@ -56492,10 +56559,7 @@ i32.const 10224 local.get $0 call $~lib/array/Array#__get - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s call $~lib/typedarray/Int16Array#__set local.get $0 i32.const 1 diff --git a/tests/compiler/std/typedarray.untouched.wat b/tests/compiler/std/typedarray.untouched.wat index e42f2b27c0..e137c9bc55 100644 --- a/tests/compiler/std/typedarray.untouched.wat +++ b/tests/compiler/std/typedarray.untouched.wat @@ -8671,10 +8671,7 @@ ) (func $std/typedarray/testArrayFilter<~lib/typedarray/Int8Array,i8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const 2 i32.gt_s ) @@ -8739,10 +8736,7 @@ ) (func $std/typedarray/testArrayFilter<~lib/typedarray/Int16Array,i16>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const 2 i32.gt_s ) @@ -8785,10 +8779,7 @@ ) (func $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const 2 i32.eq ) @@ -8848,10 +8839,7 @@ ) (func $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const 0 i32.eq ) @@ -8993,10 +8981,7 @@ ) (func $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const 2 i32.eq ) @@ -9056,10 +9041,7 @@ ) (func $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const 0 i32.eq ) @@ -9517,10 +9499,7 @@ ) (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const 2 i32.eq ) @@ -9580,10 +9559,7 @@ ) (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const 4 i32.eq ) @@ -9725,10 +9701,7 @@ ) (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const 2 i32.eq ) @@ -9788,10 +9761,7 @@ ) (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const 4 i32.eq ) @@ -10249,12 +10219,10 @@ ) (func $std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const 2 i32.rem_s + i32.extend8_s i32.const 0 i32.eq ) @@ -10317,10 +10285,7 @@ ) (func $std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const 2 i32.eq ) @@ -10472,12 +10437,10 @@ ) (func $std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const 2 i32.rem_s + i32.extend16_s i32.const 0 i32.eq ) @@ -10540,10 +10503,7 @@ ) (func $std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const 2 i32.eq ) @@ -12819,10 +12779,7 @@ i32.add i32.load8_s local.get $4 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.eq if local.get $6 @@ -12901,10 +12858,7 @@ i32.add i32.load8_s local.get $4 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.eq if local.get $6 @@ -12985,10 +12939,7 @@ local.get $0 local.get $3 call $~lib/array/Array#__get - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s call $~lib/typedarray/Int8Array#__set local.get $3 i32.const 1 @@ -14835,10 +14786,7 @@ i32.add i32.load16_s local.get $4 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.eq if local.get $6 @@ -14917,10 +14865,7 @@ i32.add i32.load16_s local.get $4 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.eq if local.get $6 @@ -15001,10 +14946,7 @@ local.get $0 local.get $3 call $~lib/array/Array#__get - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s call $~lib/typedarray/Int16Array#__set local.get $3 i32.const 1 @@ -20736,10 +20678,7 @@ i32.const 1 drop local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const 0 i32.lt_s local.set $2 @@ -20764,10 +20703,7 @@ i32.le_u drop local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const 10 i32.lt_u if @@ -20777,10 +20713,7 @@ i32.shl i32.add local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const 48 i32.or i32.store16 @@ -20797,20 +20730,14 @@ drop local.get $3 local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s call $~lib/util/number/decimalCount32 i32.add local.set $3 local.get $0 local.set $6 local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s local.set $5 local.get $3 local.set $4 @@ -21071,10 +20998,7 @@ i32.const 1 drop local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const 0 i32.lt_s local.set $2 @@ -21099,10 +21023,7 @@ i32.le_u drop local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const 10 i32.lt_u if @@ -21112,10 +21033,7 @@ i32.shl i32.add local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const 48 i32.or i32.store16 @@ -21132,20 +21050,14 @@ drop local.get $3 local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s call $~lib/util/number/decimalCount32 i32.add local.set $3 local.get $0 local.set $6 local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s local.set $5 local.get $3 local.set $4 @@ -33318,39 +33230,21 @@ ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.sub ) (func $std/typedarray/testArraySort<~lib/typedarray/Int8Array,i8>~anonymous|0 (param $0 i32) (param $1 i32) (result i32) local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.gt_s local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.lt_s i32.sub ) @@ -34429,39 +34323,21 @@ ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) local.get $0 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.sub ) (func $std/typedarray/testArraySort<~lib/typedarray/Int16Array,i16>~anonymous|0 (param $0 i32) (param $1 i32) (result i32) local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s local.get $0 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.gt_s local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s local.get $0 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.lt_s i32.sub ) @@ -38844,10 +38720,7 @@ call $~lib/typedarray/Int8Array#reduce local.set $1 local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const 6 i32.eq i32.eqz @@ -39023,10 +38896,7 @@ call $~lib/typedarray/Int16Array#reduce local.set $1 local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const 6 i32.eq i32.eqz @@ -39485,10 +39355,7 @@ call $~lib/typedarray/Int8Array#reduceRight local.set $1 local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const 6 i32.eq i32.eqz @@ -39664,10 +39531,7 @@ call $~lib/typedarray/Int16Array#reduceRight local.set $1 local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const 6 i32.eq i32.eqz @@ -45034,15 +44898,9 @@ call $~lib/array/Array#__get local.set $3 local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s local.get $3 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.eq i32.eqz if @@ -45120,10 +44978,7 @@ local.get $1 i32.const 0 call $~lib/array/Array#__get - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s call $~lib/typedarray/Int8Array#__set local.get $0 i32.const 1 @@ -45135,10 +44990,7 @@ local.get $1 i32.const 1 call $~lib/array/Array#__get - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s call $~lib/typedarray/Int8Array#__set local.get $0 i32.const 2 @@ -45150,10 +45002,7 @@ local.get $1 i32.const 2 call $~lib/array/Array#__get - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s call $~lib/typedarray/Int8Array#__set local.get $0 i32.const 5472 @@ -45515,15 +45364,9 @@ call $~lib/array/Array#__get local.set $3 local.get $0 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s local.get $3 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.eq i32.eqz if @@ -45601,10 +45444,7 @@ local.get $1 i32.const 0 call $~lib/array/Array#__get - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s call $~lib/typedarray/Int16Array#__set local.get $0 i32.const 1 @@ -45616,10 +45456,7 @@ local.get $1 i32.const 1 call $~lib/array/Array#__get - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s call $~lib/typedarray/Int16Array#__set local.get $0 i32.const 2 @@ -45631,10 +45468,7 @@ local.get $1 i32.const 2 call $~lib/array/Array#__get - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s call $~lib/typedarray/Int16Array#__set local.get $0 i32.const 5568 @@ -46772,20 +46606,14 @@ local.get $0 local.get $4 call $~lib/array/Array#__get - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s call $~lib/typedarray/Int8Array#__set local.get $3 local.get $4 local.get $0 local.get $4 call $~lib/array/Array#__get - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s call $~lib/typedarray/Int8Array#__set local.get $4 i32.const 1 @@ -46816,10 +46644,7 @@ local.get $4 i32.sub call $~lib/array/Array#__get - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.eq i32.eqz if @@ -47345,20 +47170,14 @@ local.get $0 local.get $4 call $~lib/array/Array#__get - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s call $~lib/typedarray/Int16Array#__set local.get $3 local.get $4 local.get $0 local.get $4 call $~lib/array/Array#__get - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s call $~lib/typedarray/Int16Array#__set local.get $4 i32.const 1 @@ -47389,10 +47208,7 @@ local.get $4 i32.sub call $~lib/array/Array#__get - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.eq i32.eqz if @@ -50197,10 +50013,7 @@ local.get $0 local.get $3 call $~lib/array/Array#__get - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s call $~lib/typedarray/Int8Array#__set local.get $3 i32.const 1 @@ -50583,10 +50396,7 @@ local.get $0 local.get $3 call $~lib/array/Array#__get - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s call $~lib/typedarray/Int16Array#__set local.get $3 i32.const 1