diff --git a/std/assembly/index.d.ts b/std/assembly/index.d.ts index cbed794a..6f5ef8f1 100644 --- a/std/assembly/index.d.ts +++ b/std/assembly/index.d.ts @@ -470,7 +470,7 @@ declare class String { static fromCharCode(ls: i32, hs?: i32): string; static fromCharCodes(arr: u16[]): string; - static fromCodePoint(cp: i32): string; + static fromCodePoint(code: i32): string; static fromCodePoints(arr: i32[]): string; readonly length: i32; diff --git a/std/assembly/internal/string.ts b/std/assembly/internal/string.ts index b551b2c4..7e6e5daa 100644 --- a/std/assembly/internal/string.ts +++ b/std/assembly/internal/string.ts @@ -152,3 +152,11 @@ export function parse(str: String, radix: i32 = 0): T { } return sign * num; } + +export function compareUTF16(ptr1: usize, ptr2: usize, len: usize): i32 { + var cmp: i32 = 0; + while (len && !(cmp = load(ptr1, HEADER_SIZE) - load(ptr2, HEADER_SIZE))) { + --len, ++ptr1, ++ptr2; + } + return cmp; +} diff --git a/std/assembly/string.ts b/std/assembly/string.ts index 759093ea..492e7502 100644 --- a/std/assembly/string.ts +++ b/std/assembly/string.ts @@ -4,6 +4,7 @@ import { EMPTY, clamp, allocate, + compareUTF16, isWhiteSpaceOrLineTerminator, CharCode, parse @@ -14,7 +15,9 @@ export class String { readonly length: i32; // capped to [0, MAX_LENGTH] + // TODO Add and handle second argument static fromCharCode(code: i32): String { + if (!code) return changetype("\0"); var out = allocate(1); store( changetype(out), @@ -24,6 +27,30 @@ export class String { return out; } + static fromCodePoint(code: i32): String { + assert(code <= 0x10FFFF); // Invalid code point range + if (!code) return changetype("\0"); + var sur = code > 0xFFFF; + var out = allocate(sur + 1); + if (!sur) { + store( + changetype(out), + code, + HEADER_SIZE + ); + } else { + code -= 0x10000; + let hi: u32 = (code >>> 10) + 0xD800; + let lo: u32 = (code & 0x3FF) + 0xDC00; + store( + changetype(out), + (hi << 16) | lo, + HEADER_SIZE + ); + } + return out; + } + @operator("[]") charAt(pos: i32): String { assert(this !== null); @@ -112,10 +139,10 @@ export class String { var searchLength: isize = searchString.length; var start: isize = end - searchLength; if (start < 0) return false; - return !memory.compare( - changetype(this) + HEADER_SIZE + (start << 1), - changetype(searchString) + HEADER_SIZE, - searchLength << 1 + return !compareUTF16( + changetype(this) + (start << 1), + changetype(searchString), + searchLength ); } @@ -127,10 +154,10 @@ export class String { var leftLength = left.length; if (leftLength != right.length) return false; - return !memory.compare( - changetype(left) + HEADER_SIZE, - changetype(right) + HEADER_SIZE, - (leftLength << 1) + return !compareUTF16( + changetype(left), + changetype(right), + leftLength ); } @@ -150,10 +177,10 @@ export class String { if (!rightLength) return true; var length = min(leftLength, rightLength); - return memory.compare( - changetype(left) + HEADER_SIZE, - changetype(right) + HEADER_SIZE, - length << 1 + return compareUTF16( + changetype(left), + changetype(right), + length ) > 0; } @@ -169,10 +196,10 @@ export class String { if (!rightLength) return true; var length = min(leftLength, rightLength); - return memory.compare( - changetype(left) + HEADER_SIZE, - changetype(right) + HEADER_SIZE, - length << 1 + return compareUTF16( + changetype(left), + changetype(right), + length ) >= 0; } @@ -187,10 +214,10 @@ export class String { if (!leftLength) return true; var length = min(leftLength, rightLength); - return memory.compare( - changetype(left) + HEADER_SIZE, - changetype(right) + HEADER_SIZE, - length << 1 + return compareUTF16( + changetype(left), + changetype(right), + length ) < 0; } @@ -206,10 +233,10 @@ export class String { if (!leftLength) return true; var length = min(leftLength, rightLength); - return memory.compare( - changetype(left) + HEADER_SIZE, - changetype(right) + HEADER_SIZE, - length << 1 + return compareUTF16( + changetype(left), + changetype(right), + length ) <= 0; } @@ -226,12 +253,11 @@ export class String { if (!len) return -1; var start = clamp(fromIndex, 0, len); len -= searchLen; - // TODO: multiple char codes for (let k: isize = start; k <= len; ++k) { - if (!memory.compare( - changetype(this) + HEADER_SIZE + (k << 1), - changetype(searchString) + HEADER_SIZE, - searchLen << 1 + if (!compareUTF16( + changetype(this) + (k << 1), + changetype(searchString), + searchLen )) { return k; } @@ -250,10 +276,10 @@ export class String { // TODO: multiple char codes for (let k = start; k >= 0; --k) { - if (!memory.compare( - changetype(this) + HEADER_SIZE + (k << 1), - changetype(searchString) + HEADER_SIZE, - searchLen << 1 + if (!compareUTF16( + changetype(this) + (k << 1), + changetype(searchString), + searchLen )) { return k; } @@ -269,13 +295,12 @@ export class String { var len: isize = this.length; var start = clamp(pos, 0, len); var searchLength: isize = searchString.length; - if (searchLength + start > len) { - return false; - } - return !memory.compare( - changetype(this) + HEADER_SIZE + (start << 1), - changetype(searchString) + HEADER_SIZE, - searchLength << 1 + if (searchLength + start > len) return false; + + return !compareUTF16( + changetype(this) + (start << 1), + changetype(searchString), + searchLength ); } diff --git a/std/portable/index.d.ts b/std/portable/index.d.ts index 1e05b355..218dda71 100644 --- a/std/portable/index.d.ts +++ b/std/portable/index.d.ts @@ -283,7 +283,7 @@ declare class String { static fromCharCode(ls: i32, hs?: i32): string; static fromCharCodes(arr: u16[]): string; - static fromCodePoint(cp: i32): string; + static fromCodePoint(code: i32): string; static fromCodePoints(arr: i32[]): string; readonly length: i32; diff --git a/tests/compiler/object-literal.optimized.wat b/tests/compiler/object-literal.optimized.wat index 065b7136..7768d1a8 100644 --- a/tests/compiler/object-literal.optimized.wat +++ b/tests/compiler/object-literal.optimized.wat @@ -104,38 +104,26 @@ (get_local $0) ) ) - (func $~lib/memory/memcmp (; 3 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/internal/string/compareUTF16 (; 3 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) - (if - (i32.eq - (get_local $0) - (get_local $1) - ) - (return - (i32.const 0) - ) - ) (loop $continue|0 (if - (tee_local $3 - (i32.ne - (get_local $2) - (i32.const 0) - ) - ) - (set_local $3 - (i32.eq - (i32.load8_u - (get_local $0) - ) - (i32.load8_u - (get_local $1) + (if (result i32) + (get_local $2) + (i32.eqz + (tee_local $3 + (i32.sub + (i32.load16_u offset=4 + (get_local $0) + ) + (i32.load16_u offset=4 + (get_local $1) + ) + ) ) ) + (get_local $2) ) - ) - (if - (get_local $3) (block (set_local $2 (i32.sub @@ -159,29 +147,9 @@ ) ) ) - (tee_local $0 - (if (result i32) - (get_local $2) - (i32.sub - (i32.load8_u - (get_local $0) - ) - (i32.load8_u - (get_local $1) - ) - ) - (i32.const 0) - ) - ) + (get_local $3) ) - (func $~lib/memory/memory.compare (; 4 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (call $~lib/memory/memcmp - (get_local $0) - (get_local $1) - (get_local $2) - ) - ) - (func $~lib/string/String.__eq (; 5 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__eq (; 4 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (if (i32.eq @@ -228,23 +196,14 @@ ) ) (i32.eqz - (call $~lib/memory/memory.compare - (i32.add - (get_local $0) - (i32.const 4) - ) - (i32.add - (get_local $1) - (i32.const 4) - ) - (i32.shl - (get_local $2) - (i32.const 1) - ) + (call $~lib/internal/string/compareUTF16 + (get_local $0) + (get_local $1) + (get_local $2) ) ) ) - (func $object-literal/bar (; 6 ;) (type $iv) (param $0 i32) + (func $object-literal/bar (; 5 ;) (type $iv) (param $0 i32) (if (i32.ne (i32.load @@ -282,7 +241,7 @@ ) ) ) - (func $object-literal/bar2 (; 7 ;) (type $iv) (param $0 i32) + (func $object-literal/bar2 (; 6 ;) (type $iv) (param $0 i32) (if (i32.ne (i32.load @@ -301,7 +260,7 @@ ) ) ) - (func $object-literal/Foo2#test (; 8 ;) (type $iv) (param $0 i32) + (func $object-literal/Foo2#test (; 7 ;) (type $iv) (param $0 i32) (if (i32.ne (i32.load @@ -320,7 +279,7 @@ ) ) ) - (func $start (; 9 ;) (type $v) + (func $start (; 8 ;) (type $v) (local $0 i32) (set_global $~lib/allocator/arena/startOffset (i32.const 80) diff --git a/tests/compiler/object-literal.untouched.wat b/tests/compiler/object-literal.untouched.wat index 63c0d36e..d5348e36 100644 --- a/tests/compiler/object-literal.untouched.wat +++ b/tests/compiler/object-literal.untouched.wat @@ -134,36 +134,29 @@ ) ) ) - (func $~lib/memory/memcmp (; 3 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/internal/string/compareUTF16 (; 3 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) - (if - (i32.eq - (get_local $0) - (get_local $1) - ) - (return - (i32.const 0) - ) + (set_local $3 + (i32.const 0) ) (block $break|0 (loop $continue|0 (if (if (result i32) - (tee_local $3 - (i32.ne - (get_local $2) - (i32.const 0) + (get_local $2) + (i32.eqz + (tee_local $3 + (i32.sub + (i32.load16_u offset=4 + (get_local $0) + ) + (i32.load16_u offset=4 + (get_local $1) + ) + ) ) ) - (i32.eq - (i32.load8_u - (get_local $0) - ) - (i32.load8_u - (get_local $1) - ) - ) - (get_local $3) + (get_local $2) ) (block (block @@ -191,27 +184,9 @@ ) ) ) - (if (result i32) - (get_local $2) - (i32.sub - (i32.load8_u - (get_local $0) - ) - (i32.load8_u - (get_local $1) - ) - ) - (i32.const 0) - ) + (get_local $3) ) - (func $~lib/memory/memory.compare (; 4 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (call $~lib/memory/memcmp - (get_local $0) - (get_local $1) - (get_local $2) - ) - ) - (func $~lib/string/String.__eq (; 5 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__eq (; 4 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (if @@ -258,23 +233,14 @@ ) ) (i32.eqz - (call $~lib/memory/memory.compare - (i32.add - (get_local $0) - (get_global $~lib/internal/string/HEADER_SIZE) - ) - (i32.add - (get_local $1) - (get_global $~lib/internal/string/HEADER_SIZE) - ) - (i32.shl - (get_local $3) - (i32.const 1) - ) + (call $~lib/internal/string/compareUTF16 + (get_local $0) + (get_local $1) + (get_local $3) ) ) ) - (func $object-literal/bar (; 6 ;) (type $iv) (param $0 i32) + (func $object-literal/bar (; 5 ;) (type $iv) (param $0 i32) (if (i32.eqz (i32.eq @@ -314,7 +280,7 @@ ) ) ) - (func $object-literal/bar2 (; 7 ;) (type $iv) (param $0 i32) + (func $object-literal/bar2 (; 6 ;) (type $iv) (param $0 i32) (if (i32.eqz (i32.eq @@ -335,7 +301,7 @@ ) ) ) - (func $object-literal/Foo2#test (; 8 ;) (type $iv) (param $0 i32) + (func $object-literal/Foo2#test (; 7 ;) (type $iv) (param $0 i32) (if (i32.eqz (i32.eq @@ -356,7 +322,7 @@ ) ) ) - (func $start (; 9 ;) (type $v) + (func $start (; 8 ;) (type $v) (local $0 i32) (local $1 i32) (local $2 i32) diff --git a/tests/compiler/std/array-access.optimized.wat b/tests/compiler/std/array-access.optimized.wat index 5edc1412..0d67350d 100644 --- a/tests/compiler/std/array-access.optimized.wat +++ b/tests/compiler/std/array-access.optimized.wat @@ -59,38 +59,26 @@ ) ) ) - (func $~lib/memory/memcmp (; 4 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/internal/string/compareUTF16 (; 4 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) - (if - (i32.eq - (get_local $0) - (get_local $1) - ) - (return - (i32.const 0) - ) - ) (loop $continue|0 (if - (tee_local $3 - (i32.ne - (get_local $2) - (i32.const 0) - ) - ) - (set_local $3 - (i32.eq - (i32.load8_u - (get_local $0) - ) - (i32.load8_u - (get_local $1) + (if (result i32) + (get_local $2) + (i32.eqz + (tee_local $3 + (i32.sub + (i32.load16_u offset=4 + (get_local $0) + ) + (i32.load16_u offset=4 + (get_local $1) + ) + ) ) ) + (get_local $2) ) - ) - (if - (get_local $3) (block (set_local $2 (i32.sub @@ -114,29 +102,9 @@ ) ) ) - (tee_local $0 - (if (result i32) - (get_local $2) - (i32.sub - (i32.load8_u - (get_local $0) - ) - (i32.load8_u - (get_local $1) - ) - ) - (i32.const 0) - ) - ) + (get_local $3) ) - (func $~lib/memory/memory.compare (; 5 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (call $~lib/memory/memcmp - (get_local $0) - (get_local $1) - (get_local $2) - ) - ) - (func $~lib/string/String#startsWith (; 6 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#startsWith (; 5 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (if @@ -147,7 +115,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 12) - (i32.const 265) + (i32.const 291) (i32.const 4) ) (unreachable) @@ -200,29 +168,20 @@ ) ) (i32.eqz - (call $~lib/memory/memory.compare + (call $~lib/internal/string/compareUTF16 (i32.add - (i32.add - (get_local $0) - (i32.const 4) - ) + (get_local $0) (i32.shl (get_local $2) (i32.const 1) ) ) - (i32.add - (get_local $1) - (i32.const 4) - ) - (i32.shl - (get_local $4) - (i32.const 1) - ) + (get_local $1) + (get_local $4) ) ) ) - (func $std/array-access/stringArrayMethodCall (; 7 ;) (type $ii) (param $0 i32) (result i32) + (func $std/array-access/stringArrayMethodCall (; 6 ;) (type $ii) (param $0 i32) (result i32) (call $~lib/string/String#startsWith (call $~lib/array/Array>#__get (get_local $0) @@ -232,7 +191,7 @@ (i32.const 0) ) ) - (func $std/array-access/stringArrayArrayPropertyAccess (; 8 ;) (type $ii) (param $0 i32) (result i32) + (func $std/array-access/stringArrayArrayPropertyAccess (; 7 ;) (type $ii) (param $0 i32) (result i32) (i32.load (call $~lib/array/Array>#__get (call $~lib/array/Array>#__get @@ -243,7 +202,7 @@ ) ) ) - (func $std/array-access/stringArrayArrayMethodCall (; 9 ;) (type $ii) (param $0 i32) (result i32) + (func $std/array-access/stringArrayArrayMethodCall (; 8 ;) (type $ii) (param $0 i32) (result i32) (call $~lib/string/String#startsWith (call $~lib/array/Array>#__get (call $~lib/array/Array>#__get diff --git a/tests/compiler/std/array-access.untouched.wat b/tests/compiler/std/array-access.untouched.wat index 507939b5..4cee9c77 100644 --- a/tests/compiler/std/array-access.untouched.wat +++ b/tests/compiler/std/array-access.untouched.wat @@ -130,36 +130,29 @@ ) ) ) - (func $~lib/memory/memcmp (; 6 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/internal/string/compareUTF16 (; 6 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) - (if - (i32.eq - (get_local $0) - (get_local $1) - ) - (return - (i32.const 0) - ) + (set_local $3 + (i32.const 0) ) (block $break|0 (loop $continue|0 (if (if (result i32) - (tee_local $3 - (i32.ne - (get_local $2) - (i32.const 0) + (get_local $2) + (i32.eqz + (tee_local $3 + (i32.sub + (i32.load16_u offset=4 + (get_local $0) + ) + (i32.load16_u offset=4 + (get_local $1) + ) + ) ) ) - (i32.eq - (i32.load8_u - (get_local $0) - ) - (i32.load8_u - (get_local $1) - ) - ) - (get_local $3) + (get_local $2) ) (block (block @@ -187,27 +180,9 @@ ) ) ) - (if (result i32) - (get_local $2) - (i32.sub - (i32.load8_u - (get_local $0) - ) - (i32.load8_u - (get_local $1) - ) - ) - (i32.const 0) - ) + (get_local $3) ) - (func $~lib/memory/memory.compare (; 7 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (call $~lib/memory/memcmp - (get_local $0) - (get_local $1) - (get_local $2) - ) - ) - (func $~lib/string/String#startsWith (; 8 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#startsWith (; 7 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -226,7 +201,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 12) - (i32.const 265) + (i32.const 291) (i32.const 4) ) (unreachable) @@ -297,29 +272,20 @@ ) ) (i32.eqz - (call $~lib/memory/memory.compare + (call $~lib/internal/string/compareUTF16 (i32.add - (i32.add - (get_local $0) - (get_global $~lib/internal/string/HEADER_SIZE) - ) + (get_local $0) (i32.shl (get_local $8) (i32.const 1) ) ) - (i32.add - (get_local $1) - (get_global $~lib/internal/string/HEADER_SIZE) - ) - (i32.shl - (get_local $9) - (i32.const 1) - ) + (get_local $1) + (get_local $9) ) ) ) - (func $std/array-access/stringArrayMethodCall (; 9 ;) (type $ii) (param $0 i32) (result i32) + (func $std/array-access/stringArrayMethodCall (; 8 ;) (type $ii) (param $0 i32) (result i32) (call $~lib/string/String#startsWith (call $~lib/array/Array#__get (get_local $0) @@ -329,7 +295,7 @@ (i32.const 0) ) ) - (func $~lib/array/Array>#__get (; 10 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array>#__get (; 9 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (set_local $2 (i32.load @@ -360,7 +326,7 @@ (unreachable) ) ) - (func $std/array-access/stringArrayArrayPropertyAccess (; 11 ;) (type $ii) (param $0 i32) (result i32) + (func $std/array-access/stringArrayArrayPropertyAccess (; 10 ;) (type $ii) (param $0 i32) (result i32) (i32.load (call $~lib/array/Array#__get (call $~lib/array/Array>#__get @@ -371,7 +337,7 @@ ) ) ) - (func $std/array-access/stringArrayArrayMethodCall (; 12 ;) (type $ii) (param $0 i32) (result i32) + (func $std/array-access/stringArrayArrayMethodCall (; 11 ;) (type $ii) (param $0 i32) (result i32) (call $~lib/string/String#startsWith (call $~lib/array/Array#__get (call $~lib/array/Array>#__get diff --git a/tests/compiler/std/array.optimized.wat b/tests/compiler/std/array.optimized.wat index dc002a14..8e2e6f57 100644 --- a/tests/compiler/std/array.optimized.wat +++ b/tests/compiler/std/array.optimized.wat @@ -5473,38 +5473,26 @@ ) ) ) - (func $~lib/memory/memcmp (; 90 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/internal/string/compareUTF16 (; 90 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) - (if - (i32.eq - (get_local $0) - (get_local $1) - ) - (return - (i32.const 0) - ) - ) (loop $continue|0 (if - (tee_local $3 - (i32.ne - (get_local $2) - (i32.const 0) - ) - ) - (set_local $3 - (i32.eq - (i32.load8_u - (get_local $0) - ) - (i32.load8_u - (get_local $1) + (if (result i32) + (get_local $2) + (i32.eqz + (tee_local $3 + (i32.sub + (i32.load16_u offset=4 + (get_local $0) + ) + (i32.load16_u offset=4 + (get_local $1) + ) + ) ) ) + (get_local $2) ) - ) - (if - (get_local $3) (block (set_local $2 (i32.sub @@ -5528,29 +5516,9 @@ ) ) ) - (tee_local $0 - (if (result i32) - (get_local $2) - (i32.sub - (i32.load8_u - (get_local $0) - ) - (i32.load8_u - (get_local $1) - ) - ) - (i32.const 0) - ) - ) + (get_local $3) ) - (func $~lib/memory/memory.compare (; 91 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (call $~lib/memory/memcmp - (get_local $0) - (get_local $1) - (get_local $2) - ) - ) - (func $~lib/string/String.__gt (; 92 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__gt (; 91 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (if @@ -5610,31 +5578,22 @@ ) ) (i32.gt_s - (call $~lib/memory/memory.compare - (i32.add - (get_local $0) - (i32.const 4) - ) - (i32.add - (get_local $1) - (i32.const 4) - ) - (i32.shl - (select + (call $~lib/internal/string/compareUTF16 + (get_local $0) + (get_local $1) + (select + (get_local $2) + (get_local $3) + (i32.lt_s (get_local $2) (get_local $3) - (i32.lt_s - (get_local $2) - (get_local $3) - ) ) - (i32.const 1) ) ) (i32.const 0) ) ) - (func $~lib/string/String.__lt (; 93 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__lt (; 92 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (if @@ -5694,31 +5653,22 @@ ) ) (i32.lt_s - (call $~lib/memory/memory.compare - (i32.add - (get_local $0) - (i32.const 4) - ) - (i32.add - (get_local $1) - (i32.const 4) - ) - (i32.shl - (select + (call $~lib/internal/string/compareUTF16 + (get_local $0) + (get_local $1) + (select + (get_local $2) + (get_local $3) + (i32.lt_s (get_local $2) (get_local $3) - (i32.lt_s - (get_local $2) - (get_local $3) - ) ) - (i32.const 1) ) ) (i32.const 0) ) ) - (func $start~anonymous|49 (; 94 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (func $start~anonymous|49 (; 93 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) (i32.sub (call $~lib/string/String.__gt (get_local $0) @@ -5730,7 +5680,7 @@ ) ) ) - (func $~lib/string/String.__eq (; 95 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__eq (; 94 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (if (i32.eq @@ -5777,23 +5727,14 @@ ) ) (i32.eqz - (call $~lib/memory/memory.compare - (i32.add - (get_local $0) - (i32.const 4) - ) - (i32.add - (get_local $1) - (i32.const 4) - ) - (i32.shl - (get_local $2) - (i32.const 1) - ) + (call $~lib/internal/string/compareUTF16 + (get_local $0) + (get_local $1) + (get_local $2) ) ) ) - (func $~lib/string/String.__ne (; 96 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__ne (; 95 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) (i32.eqz (call $~lib/string/String.__eq (get_local $0) @@ -5801,7 +5742,7 @@ ) ) ) - (func $std/array/isArraysEqual (; 97 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/array/isArraysEqual (; 96 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (if (i32.eqz @@ -5864,7 +5805,7 @@ ) (i32.const 1) ) - (func $~lib/internal/string/allocate (; 98 ;) (type $ii) (param $0 i32) (result i32) + (func $~lib/internal/string/allocate (; 97 ;) (type $ii) (param $0 i32) (result i32) (local $1 i32) (if (tee_local $1 @@ -5910,7 +5851,7 @@ ) (get_local $1) ) - (func $~lib/string/String#charAt (; 99 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#charAt (; 98 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (if (i32.eqz @@ -5920,7 +5861,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 696) - (i32.const 29) + (i32.const 56) (i32.const 4) ) (unreachable) @@ -5955,7 +5896,7 @@ ) (get_local $2) ) - (func $~lib/string/String#concat (; 100 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#concat (; 99 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -5967,7 +5908,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 696) - (i32.const 85) + (i32.const 112) (i32.const 4) ) (unreachable) @@ -6041,7 +5982,7 @@ ) (get_local $2) ) - (func $~lib/string/String.__concat (; 101 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__concat (; 100 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) (if (i32.eqz (get_local $0) @@ -6055,7 +5996,7 @@ (get_local $1) ) ) - (func $std/array/createRandomString (; 102 ;) (type $ii) (param $0 i32) (result i32) + (func $std/array/createRandomString (; 101 ;) (type $ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (set_local $1 @@ -6100,7 +6041,7 @@ ) (get_local $1) ) - (func $std/array/createRandomStringArray (; 103 ;) (type $ii) (param $0 i32) (result i32) + (func $std/array/createRandomStringArray (; 102 ;) (type $ii) (param $0 i32) (result i32) (local $1 i32) (set_local $1 (call $~lib/array/Array#constructor @@ -6144,7 +6085,7 @@ ) (get_local $1) ) - (func $start (; 104 ;) (type $v) + (func $start (; 103 ;) (type $v) (set_global $~lib/allocator/arena/startOffset (i32.const 792) ) diff --git a/tests/compiler/std/array.untouched.wat b/tests/compiler/std/array.untouched.wat index d23b28d9..fda4dfb5 100644 --- a/tests/compiler/std/array.untouched.wat +++ b/tests/compiler/std/array.untouched.wat @@ -7794,36 +7794,29 @@ ) ) ) - (func $~lib/memory/memcmp (; 121 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/internal/string/compareUTF16 (; 121 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) - (if - (i32.eq - (get_local $0) - (get_local $1) - ) - (return - (i32.const 0) - ) + (set_local $3 + (i32.const 0) ) (block $break|0 (loop $continue|0 (if (if (result i32) - (tee_local $3 - (i32.ne - (get_local $2) - (i32.const 0) + (get_local $2) + (i32.eqz + (tee_local $3 + (i32.sub + (i32.load16_u offset=4 + (get_local $0) + ) + (i32.load16_u offset=4 + (get_local $1) + ) + ) ) ) - (i32.eq - (i32.load8_u - (get_local $0) - ) - (i32.load8_u - (get_local $1) - ) - ) - (get_local $3) + (get_local $2) ) (block (block @@ -7851,27 +7844,9 @@ ) ) ) - (if (result i32) - (get_local $2) - (i32.sub - (i32.load8_u - (get_local $0) - ) - (i32.load8_u - (get_local $1) - ) - ) - (i32.const 0) - ) + (get_local $3) ) - (func $~lib/memory/memory.compare (; 122 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (call $~lib/memory/memcmp - (get_local $0) - (get_local $1) - (get_local $2) - ) - ) - (func $~lib/string/String.__gt (; 123 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__gt (; 122 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -7945,24 +7920,15 @@ ) ) (i32.gt_s - (call $~lib/memory/memory.compare - (i32.add - (get_local $0) - (get_global $~lib/internal/string/HEADER_SIZE) - ) - (i32.add - (get_local $1) - (get_global $~lib/internal/string/HEADER_SIZE) - ) - (i32.shl - (get_local $6) - (i32.const 1) - ) + (call $~lib/internal/string/compareUTF16 + (get_local $0) + (get_local $1) + (get_local $6) ) (i32.const 0) ) ) - (func $~lib/string/String.__lt (; 124 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__lt (; 123 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8036,24 +8002,15 @@ ) ) (i32.lt_s - (call $~lib/memory/memory.compare - (i32.add - (get_local $0) - (get_global $~lib/internal/string/HEADER_SIZE) - ) - (i32.add - (get_local $1) - (get_global $~lib/internal/string/HEADER_SIZE) - ) - (i32.shl - (get_local $6) - (i32.const 1) - ) + (call $~lib/internal/string/compareUTF16 + (get_local $0) + (get_local $1) + (get_local $6) ) (i32.const 0) ) ) - (func $start~anonymous|49 (; 125 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (func $start~anonymous|49 (; 124 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) (i32.sub (call $~lib/string/String.__gt (get_local $0) @@ -8065,12 +8022,12 @@ ) ) ) - (func $~lib/array/Array#get:length (; 126 ;) (type $ii) (param $0 i32) (result i32) + (func $~lib/array/Array#get:length (; 125 ;) (type $ii) (param $0 i32) (result i32) (i32.load offset=4 (get_local $0) ) ) - (func $~lib/internal/array/insertionSort (; 127 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/internal/array/insertionSort (; 126 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8226,7 +8183,7 @@ ) (get_local $0) ) - (func $~lib/array/Array#sort (; 128 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#sort (; 127 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8362,7 +8319,7 @@ ) ) ) - (func $~lib/array/Array#__get (; 129 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__get (; 128 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (set_local $2 (i32.load @@ -8393,7 +8350,7 @@ (unreachable) ) ) - (func $std/array/isSorted (; 130 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/array/isSorted (; 129 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (block $break|0 @@ -8454,7 +8411,7 @@ ) (i32.const 1) ) - (func $std/array/assertSorted (; 131 ;) (type $iiv) (param $0 i32) (param $1 i32) + (func $std/array/assertSorted (; 130 ;) (type $iiv) (param $0 i32) (param $1 i32) (if (i32.eqz (call $std/array/isSorted @@ -8476,7 +8433,7 @@ ) ) ) - (func $~lib/string/String.__eq (; 132 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__eq (; 131 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (if @@ -8523,23 +8480,14 @@ ) ) (i32.eqz - (call $~lib/memory/memory.compare - (i32.add - (get_local $0) - (get_global $~lib/internal/string/HEADER_SIZE) - ) - (i32.add - (get_local $1) - (get_global $~lib/internal/string/HEADER_SIZE) - ) - (i32.shl - (get_local $3) - (i32.const 1) - ) + (call $~lib/internal/string/compareUTF16 + (get_local $0) + (get_local $1) + (get_local $3) ) ) ) - (func $~lib/string/String.__ne (; 133 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__ne (; 132 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) (i32.eqz (call $~lib/string/String.__eq (get_local $0) @@ -8547,7 +8495,7 @@ ) ) ) - (func $std/array/isArraysEqual (; 134 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/array/isArraysEqual (; 133 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (if (i32.eqz @@ -8613,7 +8561,7 @@ ) (i32.const 1) ) - (func $~lib/array/Array#constructor (; 135 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#constructor (; 134 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8684,7 +8632,7 @@ ) (get_local $0) ) - (func $~lib/internal/string/allocate (; 136 ;) (type $ii) (param $0 i32) (result i32) + (func $~lib/internal/string/allocate (; 135 ;) (type $ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (if @@ -8730,7 +8678,7 @@ ) (get_local $2) ) - (func $~lib/string/String#charAt (; 137 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#charAt (; 136 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (if (i32.eqz @@ -8743,7 +8691,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 696) - (i32.const 29) + (i32.const 56) (i32.const 4) ) (unreachable) @@ -8779,7 +8727,7 @@ ) (get_local $2) ) - (func $~lib/string/String#concat (; 138 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#concat (; 137 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8795,7 +8743,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 696) - (i32.const 85) + (i32.const 112) (i32.const 4) ) (unreachable) @@ -8876,7 +8824,7 @@ ) (get_local $5) ) - (func $~lib/string/String.__concat (; 139 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__concat (; 138 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) (if (i32.eqz (get_local $0) @@ -8890,7 +8838,7 @@ (get_local $1) ) ) - (func $std/array/createRandomString (; 140 ;) (type $ii) (param $0 i32) (result i32) + (func $std/array/createRandomString (; 139 ;) (type $ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 f64) @@ -8946,7 +8894,7 @@ ) (get_local $1) ) - (func $~lib/array/Array#__set (; 141 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array#__set (; 140 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (set_local $3 @@ -9021,7 +8969,7 @@ ) ) ) - (func $std/array/createRandomStringArray (; 142 ;) (type $ii) (param $0 i32) (result i32) + (func $std/array/createRandomStringArray (; 141 ;) (type $ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (set_local $1 @@ -9068,7 +9016,7 @@ ) (get_local $1) ) - (func $start~anonymous|50 (; 143 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (func $start~anonymous|50 (; 142 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) (i32.sub (call $~lib/string/String.__gt (get_local $0) @@ -9080,7 +9028,7 @@ ) ) ) - (func $start (; 144 ;) (type $v) + (func $start (; 143 ;) (type $v) (set_global $~lib/allocator/arena/startOffset (i32.and (i32.add diff --git a/tests/compiler/std/string.optimized.wat b/tests/compiler/std/string.optimized.wat index 28c47c49..558b3138 100644 --- a/tests/compiler/std/string.optimized.wat +++ b/tests/compiler/std/string.optimized.wat @@ -1,11 +1,11 @@ (module (type $iiiiv (func (param i32 i32 i32 i32))) (type $iii (func (param i32 i32) (result i32))) + (type $ii (func (param i32) (result i32))) (type $iiii (func (param i32 i32 i32) (result i32))) (type $i (func (result i32))) (type $iiF (func (param i32 i32) (result f64))) (type $iF (func (param i32) (result f64))) - (type $ii (func (param i32) (result i32))) (type $iiiv (func (param i32 i32 i32))) (type $Ii (func (param i64) (result i32))) (type $iIiv (func (param i32 i64 i32))) @@ -17,77 +17,82 @@ (global $std/string/nullStr (mut i32) (i32.const 0)) (global $~argc (mut i32) (i32.const 0)) (global $std/string/c (mut i32) (i32.const 0)) + (global $std/string/a (mut i32) (i32.const 0)) + (global $std/string/b (mut i32) (i32.const 0)) (memory $0 1) (data (i32.const 12) "\10\00\00\00h\00i\00,\00 \00I\00\'\00m\00 \00a\00 \00s\00t\00r\00i\00n\00g") (data (i32.const 48) "\0d\00\00\00s\00t\00d\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s") (data (i32.const 80) "\0e\00\00\00~\00l\00i\00b\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s") - (data (i32.const 112) "\02\00\00\00h\00i") - (data (i32.const 120) "\04\00\00\00n\00u\00l\00l") - (data (i32.const 132) "\06\00\00\00s\00t\00r\00i\00n\00g") - (data (i32.const 148) "\03\00\00\00I\00\'\00m") - (data (i32.const 160) "\01\00\00\00,") - (data (i32.const 168) "\01\00\00\00x") - (data (i32.const 176) "\03\00\00\00,\00 \00I") - (data (i32.const 188) "\01\00\00\00g") - (data (i32.const 196) "\01\00\00\00i") - (data (i32.const 204) "\01\00\00\000") - (data (i32.const 212) "\01\00\00\001") - (data (i32.const 220) "\05\00\00\000\00b\001\000\001") - (data (i32.const 236) "\05\00\00\000\00o\007\000\007") - (data (i32.const 252) "\05\00\00\000\00x\00f\000\00f") - (data (i32.const 268) "\05\00\00\000\00x\00F\000\00F") - (data (i32.const 284) "\03\00\00\000\001\001") - (data (i32.const 296) "\04\00\00\000\00x\001\00g") - (data (i32.const 308) "\03\00\00\000\00.\001") - (data (i32.const 320) "\03\00\00\00.\002\005") - (data (i32.const 332) "\08\00\00\00.\001\00f\00o\00o\00b\00a\00r") - (data (i32.const 352) "\01\00\00\00a") - (data (i32.const 360) "\01\00\00\00b") - (data (i32.const 368) "\17\00\00\00~\00l\00i\00b\00/\00i\00n\00t\00e\00r\00n\00a\00l\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s") - (data (i32.const 420) "\02\00\00\00a\00b") - (data (i32.const 428) "\02\00\00\00b\00a") - (data (i32.const 436) "\02\00\00\00a\00a") - (data (i32.const 444) "\03\00\00\00a\00b\00c") - (data (i32.const 456) "\03\00\00\001\002\003") - (data (i32.const 468) "\03\00\00\00a\00a\00a") - (data (i32.const 480) "\08\00\00\00a\00b\00a\00b\00a\00b\00a\00b") - (data (i32.const 500) "\05\00\00\00a\00a\00a\00a\00a") - (data (i32.const 516) "\06\00\00\00a\00a\00a\00a\00a\00a") - (data (i32.const 532) "\07\00\00\00a\00a\00a\00a\00a\00a\00a") - (data (i32.const 552) "0\02\00\00\n\00\00\00(\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00d\00\00\00\e8\03\00\00\10\'\00\00\a0\86\01\00@B\0f\00\80\96\98\00\00\e1\f5\05\00\ca\9a;") - (data (i32.const 624) "x\02\00\00d\00\00\00\90\01\00\00\00\00\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") - (data (i32.const 1144) "\01\00\00\008") - (data (i32.const 1152) "\05\00\00\00-\001\000\000\000") - (data (i32.const 1168) "\04\00\00\001\002\003\004") - (data (i32.const 1180) "\05\00\00\001\002\003\004\005") - (data (i32.const 1196) "\06\00\00\001\002\003\004\005\006") - (data (i32.const 1212) "\07\00\00\001\001\001\001\001\001\001") - (data (i32.const 1232) "\07\00\00\001\002\003\004\005\006\007") - (data (i32.const 1252) "\n\00\00\002\001\004\007\004\008\003\006\004\006") - (data (i32.const 1276) "\n\00\00\002\001\004\007\004\008\003\006\004\007") - (data (i32.const 1300) "\0b\00\00\00-\002\001\004\007\004\008\003\006\004\008") - (data (i32.const 1328) "\02\00\00\00-\001") - (data (i32.const 1336) "\04\00\00\001\000\000\000") - (data (i32.const 1348) "\n\00\00\002\001\004\007\004\008\003\006\004\008") - (data (i32.const 1372) "\n\00\00\004\002\009\004\009\006\007\002\009\005") - (data (i32.const 1400) "\80\05\00\00\n\00\00\00(\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00d\00\00\00\e8\03\00\00\10\'\00\00\a0\86\01\00@B\0f\00\80\96\98\00\00\e1\f5\05\00\ca\9a;") - (data (i32.const 1472) "\c8\05\00\00d\00\00\00\90\01\00\00\00\00\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") - (data (i32.const 1992) "\08\00\00\009\009\009\009\009\009\009\009") - (data (i32.const 2012) "\t\00\00\001\000\000\000\000\000\000\000\000") - (data (i32.const 2036) "\0b\00\00\006\008\007\001\009\004\007\006\007\003\005") - (data (i32.const 2064) "\0c\00\00\008\006\008\007\001\009\004\007\006\007\003\005") - (data (i32.const 2092) "\0f\00\00\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005") - (data (i32.const 2128) "\10\00\00\009\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005") - (data (i32.const 2164) "\11\00\00\001\009\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005") - (data (i32.const 2204) "\14\00\00\001\008\004\004\006\007\004\004\000\007\003\007\000\009\005\005\001\006\001\005") - (data (i32.const 2248) "\05\00\00\00-\001\002\003\004") - (data (i32.const 2264) "\0b\00\00\00-\004\002\009\004\009\006\007\002\009\005") - (data (i32.const 2292) "\0c\00\00\00-\006\008\007\001\009\004\007\006\007\003\005") - (data (i32.const 2320) "\0d\00\00\00-\008\006\008\007\001\009\004\007\006\007\003\005") - (data (i32.const 2352) "\10\00\00\00-\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005") - (data (i32.const 2388) "\12\00\00\00-\001\009\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005") - (data (i32.const 2428) "\13\00\00\009\002\002\003\003\007\002\000\003\006\008\005\004\007\007\005\008\000\007") - (data (i32.const 2472) "\14\00\00\00-\009\002\002\003\003\007\002\000\003\006\008\005\004\007\007\005\008\000\008") + (data (i32.const 112) "\01") + (data (i32.const 120) "\17\00\00\00~\00l\00i\00b\00/\00i\00n\00t\00e\00r\00n\00a\00l\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s") + (data (i32.const 172) "\01\00\00\006") + (data (i32.const 180) "\02\00\00\004\d8\06\df") + (data (i32.const 188) "\02\00\00\00h\00i") + (data (i32.const 196) "\04\00\00\00n\00u\00l\00l") + (data (i32.const 208) "\06\00\00\00s\00t\00r\00i\00n\00g") + (data (i32.const 224) "\03\00\00\00I\00\'\00m") + (data (i32.const 236) "\01\00\00\00,") + (data (i32.const 244) "\01\00\00\00x") + (data (i32.const 252) "\03\00\00\00,\00 \00I") + (data (i32.const 264) "\01\00\00\00g") + (data (i32.const 272) "\01\00\00\00i") + (data (i32.const 280) "\01\00\00\000") + (data (i32.const 288) "\01\00\00\001") + (data (i32.const 296) "\05\00\00\000\00b\001\000\001") + (data (i32.const 312) "\05\00\00\000\00o\007\000\007") + (data (i32.const 328) "\05\00\00\000\00x\00f\000\00f") + (data (i32.const 344) "\05\00\00\000\00x\00F\000\00F") + (data (i32.const 360) "\03\00\00\000\001\001") + (data (i32.const 372) "\04\00\00\000\00x\001\00g") + (data (i32.const 384) "\03\00\00\000\00.\001") + (data (i32.const 396) "\03\00\00\00.\002\005") + (data (i32.const 408) "\08\00\00\00.\001\00f\00o\00o\00b\00a\00r") + (data (i32.const 428) "\01\00\00\00a") + (data (i32.const 436) "\01\00\00\00b") + (data (i32.const 444) "\02\00\00\00a\00b") + (data (i32.const 452) "\02\00\00\00b\00a") + (data (i32.const 460) "\02\00\00\00a\00a") + (data (i32.const 468) "\03\00\00\00a\00b\00c") + (data (i32.const 480) "\03\00\00\001\002\003") + (data (i32.const 492) "\03\00\00\00a\00a\00a") + (data (i32.const 504) "\08\00\00\00a\00b\00a\00b\00a\00b\00a\00b") + (data (i32.const 524) "\05\00\00\00a\00a\00a\00a\00a") + (data (i32.const 540) "\06\00\00\00a\00a\00a\00a\00a\00a") + (data (i32.const 556) "\07\00\00\00a\00a\00a\00a\00a\00a\00a") + (data (i32.const 576) "H\02\00\00\n\00\00\00(\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00d\00\00\00\e8\03\00\00\10\'\00\00\a0\86\01\00@B\0f\00\80\96\98\00\00\e1\f5\05\00\ca\9a;") + (data (i32.const 648) "\90\02\00\00d\00\00\00\90\01\00\00\00\00\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data (i32.const 1168) "\01\00\00\008") + (data (i32.const 1176) "\05\00\00\00-\001\000\000\000") + (data (i32.const 1192) "\04\00\00\001\002\003\004") + (data (i32.const 1204) "\05\00\00\001\002\003\004\005") + (data (i32.const 1220) "\06\00\00\001\002\003\004\005\006") + (data (i32.const 1236) "\07\00\00\001\001\001\001\001\001\001") + (data (i32.const 1256) "\07\00\00\001\002\003\004\005\006\007") + (data (i32.const 1276) "\n\00\00\002\001\004\007\004\008\003\006\004\006") + (data (i32.const 1300) "\n\00\00\002\001\004\007\004\008\003\006\004\007") + (data (i32.const 1324) "\0b\00\00\00-\002\001\004\007\004\008\003\006\004\008") + (data (i32.const 1352) "\02\00\00\00-\001") + (data (i32.const 1360) "\04\00\00\001\000\000\000") + (data (i32.const 1372) "\n\00\00\002\001\004\007\004\008\003\006\004\008") + (data (i32.const 1396) "\n\00\00\004\002\009\004\009\006\007\002\009\005") + (data (i32.const 1424) "\98\05\00\00\n\00\00\00(\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00d\00\00\00\e8\03\00\00\10\'\00\00\a0\86\01\00@B\0f\00\80\96\98\00\00\e1\f5\05\00\ca\9a;") + (data (i32.const 1496) "\e0\05\00\00d\00\00\00\90\01\00\00\00\00\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data (i32.const 2016) "\08\00\00\009\009\009\009\009\009\009\009") + (data (i32.const 2036) "\t\00\00\001\000\000\000\000\000\000\000\000") + (data (i32.const 2060) "\0b\00\00\006\008\007\001\009\004\007\006\007\003\005") + (data (i32.const 2088) "\0c\00\00\008\006\008\007\001\009\004\007\006\007\003\005") + (data (i32.const 2116) "\0f\00\00\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005") + (data (i32.const 2152) "\10\00\00\009\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005") + (data (i32.const 2188) "\11\00\00\001\009\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005") + (data (i32.const 2228) "\14\00\00\001\008\004\004\006\007\004\004\000\007\003\007\000\009\005\005\001\006\001\005") + (data (i32.const 2272) "\05\00\00\00-\001\002\003\004") + (data (i32.const 2288) "\0b\00\00\00-\004\002\009\004\009\006\007\002\009\005") + (data (i32.const 2316) "\0c\00\00\00-\006\008\007\001\009\004\007\006\007\003\005") + (data (i32.const 2344) "\0d\00\00\00-\008\006\008\007\001\009\004\007\006\007\003\005") + (data (i32.const 2376) "\10\00\00\00-\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005") + (data (i32.const 2412) "\12\00\00\00-\001\009\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005") + (data (i32.const 2452) "\13\00\00\009\002\002\003\003\007\002\000\003\006\008\005\004\007\007\005\008\000\007") + (data (i32.const 2496) "\14\00\00\00-\009\002\002\003\003\007\002\000\003\006\008\005\004\007\007\005\008\000\008") (export "memory" (memory $0)) (export "getString" (func $std/string/getString)) (start $start) @@ -100,7 +105,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 80) - (i32.const 48) + (i32.const 75) (i32.const 4) ) (unreachable) @@ -127,38 +132,183 @@ ) ) ) - (func $~lib/memory/memcmp (; 2 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/allocator/arena/__memory_allocate (; 2 ;) (type $ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) (local $3 i32) (if - (i32.eq - (get_local $0) - (get_local $1) - ) - (return - (i32.const 0) + (get_local $0) + (block + (if + (i32.gt_u + (get_local $0) + (i32.const 1073741824) + ) + (unreachable) + ) + (if + (i32.gt_u + (tee_local $0 + (i32.and + (i32.add + (i32.add + (tee_local $1 + (get_global $~lib/allocator/arena/offset) + ) + (get_local $0) + ) + (i32.const 7) + ) + (i32.const -8) + ) + ) + (i32.shl + (tee_local $2 + (current_memory) + ) + (i32.const 16) + ) + ) + (if + (i32.lt_s + (grow_memory + (select + (get_local $2) + (tee_local $3 + (i32.shr_u + (i32.and + (i32.add + (i32.sub + (get_local $0) + (get_local $1) + ) + (i32.const 65535) + ) + (i32.const -65536) + ) + (i32.const 16) + ) + ) + (i32.gt_s + (get_local $2) + (get_local $3) + ) + ) + ) + (i32.const 0) + ) + (if + (i32.lt_s + (grow_memory + (get_local $3) + ) + (i32.const 0) + ) + (unreachable) + ) + ) + ) + (set_global $~lib/allocator/arena/offset + (get_local $0) + ) + (return + (get_local $1) + ) ) ) - (loop $continue|0 - (if - (tee_local $3 - (i32.ne - (get_local $2) - (i32.const 0) - ) + (i32.const 0) + ) + (func $~lib/memory/memory.allocate (; 3 ;) (type $ii) (param $0 i32) (result i32) + (call $~lib/allocator/arena/__memory_allocate + (get_local $0) + ) + ) + (func $~lib/internal/string/allocate (; 4 ;) (type $ii) (param $0 i32) (result i32) + (local $1 i32) + (if + (tee_local $1 + (i32.gt_s + (get_local $0) + (i32.const 0) ) - (set_local $3 - (i32.eq - (i32.load8_u + ) + (set_local $1 + (i32.le_s + (get_local $0) + (i32.const 536870910) + ) + ) + ) + (if + (i32.eqz + (get_local $1) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 120) + (i32.const 25) + (i32.const 2) + ) + (unreachable) + ) + ) + (i32.store + (tee_local $1 + (call $~lib/memory/memory.allocate + (i32.add + (i32.shl (get_local $0) + (i32.const 1) ) - (i32.load8_u - (get_local $1) - ) + (i32.const 4) ) ) ) + (get_local $0) + ) + (get_local $1) + ) + (func $~lib/string/String.fromCharCode (; 5 ;) (type $ii) (param $0 i32) (result i32) + (local $1 i32) + (if + (i32.eqz + (get_local $0) + ) + (return + (i32.const 112) + ) + ) + (i32.store16 offset=4 + (tee_local $1 + (call $~lib/internal/string/allocate + (i32.const 1) + ) + ) + (get_local $0) + ) + (get_local $1) + ) + (func $~lib/internal/string/compareUTF16 (; 6 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (loop $continue|0 (if - (get_local $3) + (if (result i32) + (get_local $2) + (i32.eqz + (tee_local $3 + (i32.sub + (i32.load16_u offset=4 + (get_local $0) + ) + (i32.load16_u offset=4 + (get_local $1) + ) + ) + ) + ) + (get_local $2) + ) (block (set_local $2 (i32.sub @@ -182,29 +332,138 @@ ) ) ) - (tee_local $0 - (if (result i32) - (get_local $2) - (i32.sub - (i32.load8_u + (get_local $3) + ) + (func $~lib/string/String.__eq (; 7 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (if + (i32.eq + (get_local $0) + (get_local $1) + ) + (return + (i32.const 1) + ) + ) + (if + (i32.eqz + (tee_local $2 + (i32.eqz (get_local $0) ) - (i32.load8_u - (get_local $1) - ) ) + ) + (set_local $2 + (i32.eqz + (get_local $1) + ) + ) + ) + (if + (get_local $2) + (return (i32.const 0) ) ) - ) - (func $~lib/memory/memory.compare (; 3 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (call $~lib/memory/memcmp - (get_local $0) - (get_local $1) - (get_local $2) + (if + (i32.ne + (tee_local $2 + (i32.load + (get_local $0) + ) + ) + (i32.load + (get_local $1) + ) + ) + (return + (i32.const 0) + ) + ) + (i32.eqz + (call $~lib/internal/string/compareUTF16 + (get_local $0) + (get_local $1) + (get_local $2) + ) ) ) - (func $~lib/string/String#startsWith (; 4 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String.fromCodePoint (; 8 ;) (type $ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (if + (i32.gt_u + (get_local $0) + (i32.const 1114111) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 80) + (i32.const 31) + (i32.const 4) + ) + (unreachable) + ) + ) + (if + (i32.eqz + (get_local $0) + ) + (return + (i32.const 112) + ) + ) + (set_local $1 + (call $~lib/internal/string/allocate + (i32.add + (tee_local $2 + (i32.gt_s + (get_local $0) + (i32.const 65535) + ) + ) + (i32.const 1) + ) + ) + ) + (if + (get_local $2) + (i32.store offset=4 + (get_local $1) + (i32.or + (i32.shl + (i32.add + (i32.shr_u + (tee_local $0 + (i32.sub + (get_local $0) + (i32.const 65536) + ) + ) + (i32.const 10) + ) + (i32.const 55296) + ) + (i32.const 16) + ) + (i32.add + (i32.and + (get_local $0) + (i32.const 1023) + ) + (i32.const 56320) + ) + ) + ) + (i32.store16 offset=4 + (get_local $1) + (get_local $0) + ) + ) + (get_local $1) + ) + (func $~lib/string/String#startsWith (; 9 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (if @@ -215,7 +474,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 80) - (i32.const 265) + (i32.const 291) (i32.const 4) ) (unreachable) @@ -226,7 +485,7 @@ (get_local $1) ) (set_local $1 - (i32.const 120) + (i32.const 196) ) ) (if @@ -268,29 +527,20 @@ ) ) (i32.eqz - (call $~lib/memory/memory.compare + (call $~lib/internal/string/compareUTF16 (i32.add - (i32.add - (get_local $0) - (i32.const 4) - ) + (get_local $0) (i32.shl (get_local $2) (i32.const 1) ) ) - (i32.add - (get_local $1) - (i32.const 4) - ) - (i32.shl - (get_local $4) - (i32.const 1) - ) + (get_local $1) + (get_local $4) ) ) ) - (func $~lib/string/String#endsWith (; 5 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#endsWith (; 10 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (if (i32.eqz @@ -300,7 +550,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 80) - (i32.const 109) + (i32.const 136) (i32.const 4) ) (unreachable) @@ -353,29 +603,20 @@ ) ) (i32.eqz - (call $~lib/memory/memory.compare + (call $~lib/internal/string/compareUTF16 (i32.add - (i32.add - (get_local $0) - (i32.const 4) - ) + (get_local $0) (i32.shl (get_local $3) (i32.const 1) ) ) - (i32.add - (get_local $1) - (i32.const 4) - ) - (i32.shl - (get_local $2) - (i32.const 1) - ) + (get_local $1) + (get_local $2) ) ) ) - (func $~lib/string/String#endsWith|trampoline (; 6 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#endsWith|trampoline (; 11 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (block $1of1 (block $0of1 (block $outOfRange @@ -398,7 +639,7 @@ (get_local $2) ) ) - (func $~lib/string/String#indexOf (; 7 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#indexOf (; 12 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (if @@ -409,7 +650,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 80) - (i32.const 221) + (i32.const 248) (i32.const 4) ) (unreachable) @@ -420,7 +661,7 @@ (get_local $1) ) (set_local $1 - (i32.const 120) + (i32.const 196) ) ) (if @@ -481,25 +722,16 @@ ) ) (if - (call $~lib/memory/memory.compare + (call $~lib/internal/string/compareUTF16 (i32.add - (i32.add - (get_local $0) - (i32.const 4) - ) + (get_local $0) (i32.shl (get_local $2) (i32.const 1) ) ) - (i32.add - (get_local $1) - (i32.const 4) - ) - (i32.shl - (get_local $4) - (i32.const 1) - ) + (get_local $1) + (get_local $4) ) (block (set_local $2 @@ -518,7 +750,7 @@ ) (i32.const -1) ) - (func $~lib/string/String#includes (; 8 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#includes (; 13 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (i32.ne (call $~lib/string/String#indexOf (get_local $0) @@ -528,7 +760,7 @@ (i32.const -1) ) ) - (func $~lib/string/String#lastIndexOf (; 9 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#lastIndexOf (; 14 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (if @@ -539,7 +771,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 80) - (i32.const 243) + (i32.const 269) (i32.const 4) ) (unreachable) @@ -550,7 +782,7 @@ (get_local $1) ) (set_local $1 - (i32.const 120) + (i32.const 196) ) ) (set_local $3 @@ -611,25 +843,16 @@ ) ) (if - (call $~lib/memory/memory.compare + (call $~lib/internal/string/compareUTF16 (i32.add - (i32.add - (get_local $0) - (i32.const 4) - ) + (get_local $0) (i32.shl (get_local $3) (i32.const 1) ) ) - (i32.add - (get_local $1) - (i32.const 4) - ) - (i32.shl - (get_local $4) - (i32.const 1) - ) + (get_local $1) + (get_local $4) ) (block (set_local $3 @@ -648,7 +871,7 @@ ) (i32.const -1) ) - (func $~lib/string/String#lastIndexOf|trampoline (; 10 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#lastIndexOf|trampoline (; 15 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (block $1of1 (block $0of1 (block $outOfRange @@ -671,10 +894,10 @@ (get_local $2) ) ) - (func $std/string/getString (; 11 ;) (type $i) (result i32) + (func $std/string/getString (; 16 ;) (type $i) (result i32) (get_global $std/string/str) ) - (func $~lib/internal/string/parse (; 12 ;) (type $iiF) (param $0 i32) (param $1 i32) (result f64) + (func $~lib/internal/string/parse (; 17 ;) (type $iiF) (param $0 i32) (param $1 i32) (result f64) (local $2 i32) (local $3 i32) (local $4 i32) @@ -1037,13 +1260,13 @@ (get_local $5) ) ) - (func $~lib/string/parseInt (; 13 ;) (type $iiF) (param $0 i32) (param $1 i32) (result f64) + (func $~lib/string/parseInt (; 18 ;) (type $iiF) (param $0 i32) (param $1 i32) (result f64) (call $~lib/internal/string/parse (get_local $0) (get_local $1) ) ) - (func $~lib/string/parseFloat (; 14 ;) (type $iF) (param $0 i32) (result f64) + (func $~lib/string/parseFloat (; 19 ;) (type $iF) (param $0 i32) (result f64) (local $1 i32) (local $2 i32) (local $3 i32) @@ -1207,7 +1430,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 80) - (i32.const 563) + (i32.const 588) (i32.const 10) ) (unreachable) @@ -1293,144 +1516,7 @@ (get_local $4) ) ) - (func $~lib/allocator/arena/__memory_allocate (; 15 ;) (type $ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (if - (get_local $0) - (block - (if - (i32.gt_u - (get_local $0) - (i32.const 1073741824) - ) - (unreachable) - ) - (if - (i32.gt_u - (tee_local $0 - (i32.and - (i32.add - (i32.add - (tee_local $1 - (get_global $~lib/allocator/arena/offset) - ) - (get_local $0) - ) - (i32.const 7) - ) - (i32.const -8) - ) - ) - (i32.shl - (tee_local $2 - (current_memory) - ) - (i32.const 16) - ) - ) - (if - (i32.lt_s - (grow_memory - (select - (get_local $2) - (tee_local $3 - (i32.shr_u - (i32.and - (i32.add - (i32.sub - (get_local $0) - (get_local $1) - ) - (i32.const 65535) - ) - (i32.const -65536) - ) - (i32.const 16) - ) - ) - (i32.gt_s - (get_local $2) - (get_local $3) - ) - ) - ) - (i32.const 0) - ) - (if - (i32.lt_s - (grow_memory - (get_local $3) - ) - (i32.const 0) - ) - (unreachable) - ) - ) - ) - (set_global $~lib/allocator/arena/offset - (get_local $0) - ) - (return - (get_local $1) - ) - ) - ) - (i32.const 0) - ) - (func $~lib/memory/memory.allocate (; 16 ;) (type $ii) (param $0 i32) (result i32) - (call $~lib/allocator/arena/__memory_allocate - (get_local $0) - ) - ) - (func $~lib/internal/string/allocate (; 17 ;) (type $ii) (param $0 i32) (result i32) - (local $1 i32) - (if - (tee_local $1 - (i32.gt_s - (get_local $0) - (i32.const 0) - ) - ) - (set_local $1 - (i32.le_s - (get_local $0) - (i32.const 536870910) - ) - ) - ) - (if - (i32.eqz - (get_local $1) - ) - (block - (call $~lib/env/abort - (i32.const 0) - (i32.const 368) - (i32.const 25) - (i32.const 2) - ) - (unreachable) - ) - ) - (i32.store - (tee_local $1 - (call $~lib/memory/memory.allocate - (i32.add - (i32.shl - (get_local $0) - (i32.const 1) - ) - (i32.const 4) - ) - ) - ) - (get_local $0) - ) - (get_local $1) - ) - (func $~lib/memory/memcpy (; 18 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/memory/memcpy (; 20 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -2816,7 +2902,7 @@ ) ) ) - (func $~lib/memory/memmove (; 19 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/memory/memmove (; 21 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (if @@ -3108,14 +3194,14 @@ ) ) ) - (func $~lib/memory/memory.copy (; 20 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/memory/memory.copy (; 22 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32) (call $~lib/memory/memmove (get_local $0) (get_local $1) (get_local $2) ) ) - (func $~lib/string/String#concat (; 21 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#concat (; 23 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3127,7 +3213,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 80) - (i32.const 85) + (i32.const 112) (i32.const 4) ) (unreachable) @@ -3138,7 +3224,7 @@ (get_local $1) ) (set_local $1 - (i32.const 120) + (i32.const 196) ) ) (if @@ -3201,13 +3287,13 @@ ) (get_local $2) ) - (func $~lib/string/String.__concat (; 22 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__concat (; 24 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) (if (i32.eqz (get_local $0) ) (set_local $0 - (i32.const 120) + (i32.const 196) ) ) (call $~lib/string/String#concat @@ -3215,70 +3301,7 @@ (get_local $1) ) ) - (func $~lib/string/String.__eq (; 23 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (if - (i32.eq - (get_local $0) - (get_local $1) - ) - (return - (i32.const 1) - ) - ) - (if - (i32.eqz - (tee_local $2 - (i32.eqz - (get_local $0) - ) - ) - ) - (set_local $2 - (i32.eqz - (get_local $1) - ) - ) - ) - (if - (get_local $2) - (return - (i32.const 0) - ) - ) - (if - (i32.ne - (tee_local $2 - (i32.load - (get_local $0) - ) - ) - (i32.load - (get_local $1) - ) - ) - (return - (i32.const 0) - ) - ) - (i32.eqz - (call $~lib/memory/memory.compare - (i32.add - (get_local $0) - (i32.const 4) - ) - (i32.add - (get_local $1) - (i32.const 4) - ) - (i32.shl - (get_local $2) - (i32.const 1) - ) - ) - ) - ) - (func $~lib/string/String.__ne (; 24 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__ne (; 25 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) (i32.eqz (call $~lib/string/String.__eq (get_local $0) @@ -3286,7 +3309,7 @@ ) ) ) - (func $~lib/string/String.__gt (; 25 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__gt (; 26 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (if @@ -3346,31 +3369,22 @@ ) ) (i32.gt_s - (call $~lib/memory/memory.compare - (i32.add - (get_local $0) - (i32.const 4) - ) - (i32.add - (get_local $1) - (i32.const 4) - ) - (i32.shl - (select + (call $~lib/internal/string/compareUTF16 + (get_local $0) + (get_local $1) + (select + (get_local $2) + (get_local $3) + (i32.lt_s (get_local $2) (get_local $3) - (i32.lt_s - (get_local $2) - (get_local $3) - ) ) - (i32.const 1) ) ) (i32.const 0) ) ) - (func $~lib/string/String.__gte (; 26 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__gte (; 27 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (if @@ -3430,31 +3444,22 @@ ) ) (i32.ge_s - (call $~lib/memory/memory.compare - (i32.add - (get_local $0) - (i32.const 4) - ) - (i32.add - (get_local $1) - (i32.const 4) - ) - (i32.shl - (select + (call $~lib/internal/string/compareUTF16 + (get_local $0) + (get_local $1) + (select + (get_local $2) + (get_local $3) + (i32.lt_s (get_local $2) (get_local $3) - (i32.lt_s - (get_local $2) - (get_local $3) - ) ) - (i32.const 1) ) ) (i32.const 0) ) ) - (func $~lib/string/String.__lt (; 27 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__lt (; 28 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (if @@ -3514,31 +3519,22 @@ ) ) (i32.lt_s - (call $~lib/memory/memory.compare - (i32.add - (get_local $0) - (i32.const 4) - ) - (i32.add - (get_local $1) - (i32.const 4) - ) - (i32.shl - (select + (call $~lib/internal/string/compareUTF16 + (get_local $0) + (get_local $1) + (select + (get_local $2) + (get_local $3) + (i32.lt_s (get_local $2) (get_local $3) - (i32.lt_s - (get_local $2) - (get_local $3) - ) ) - (i32.const 1) ) ) (i32.const 0) ) ) - (func $~lib/string/String.__lte (; 28 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__lte (; 29 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (if @@ -3598,31 +3594,22 @@ ) ) (i32.le_s - (call $~lib/memory/memory.compare - (i32.add - (get_local $0) - (i32.const 4) - ) - (i32.add - (get_local $1) - (i32.const 4) - ) - (i32.shl - (select + (call $~lib/internal/string/compareUTF16 + (get_local $0) + (get_local $1) + (select + (get_local $2) + (get_local $3) + (i32.lt_s (get_local $2) (get_local $3) - (i32.lt_s - (get_local $2) - (get_local $3) - ) ) - (i32.const 1) ) ) (i32.const 0) ) ) - (func $~lib/string/String#repeat (; 29 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#repeat (; 30 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3634,7 +3621,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 80) - (i32.const 417) + (i32.const 442) (i32.const 4) ) (unreachable) @@ -3670,7 +3657,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 80) - (i32.const 422) + (i32.const 447) (i32.const 6) ) (unreachable) @@ -3760,14 +3747,14 @@ ) (get_local $4) ) - (func $~lib/internal/itoa/decimalCountU32 (; 30 ;) (type $ii) (param $0 i32) (result i32) + (func $~lib/internal/itoa/decimalCountU32 (; 31 ;) (type $ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (set_local $2 (i32.load offset=8 (i32.add (i32.load - (i32.const 552) + (i32.const 576) ) (i32.shl (tee_local $1 @@ -3800,12 +3787,12 @@ (i32.const 1) ) ) - (func $~lib/internal/itoa/utoa32_lut (; 31 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/internal/itoa/utoa32_lut (; 32 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (set_local $3 (i32.load - (i32.const 624) + (i32.const 648) ) ) (loop $continue|0 @@ -3961,7 +3948,7 @@ ) ) ) - (func $~lib/internal/itoa/itoa32 (; 32 ;) (type $ii) (param $0 i32) (result i32) + (func $~lib/internal/itoa/itoa32 (; 33 ;) (type $ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -3970,7 +3957,7 @@ (get_local $0) ) (return - (i32.const 204) + (i32.const 280) ) ) (if @@ -4012,7 +3999,7 @@ ) (get_local $2) ) - (func $~lib/internal/itoa/utoa32 (; 33 ;) (type $ii) (param $0 i32) (result i32) + (func $~lib/internal/itoa/utoa32 (; 34 ;) (type $ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (if @@ -4020,7 +4007,7 @@ (get_local $0) ) (return - (i32.const 204) + (i32.const 280) ) ) (call $~lib/internal/itoa/utoa32_lut @@ -4038,14 +4025,14 @@ ) (get_local $2) ) - (func $~lib/internal/itoa/decimalCountU64 (; 34 ;) (type $Ii) (param $0 i64) (result i32) + (func $~lib/internal/itoa/decimalCountU64 (; 35 ;) (type $Ii) (param $0 i64) (result i32) (local $1 i32) (local $2 i64) (set_local $2 (i64.load32_u offset=8 (i32.add (i32.load - (i32.const 1400) + (i32.const 1424) ) (i32.shl (i32.sub @@ -4086,14 +4073,14 @@ (i32.const 1) ) ) - (func $~lib/internal/itoa/utoa64_lut (; 35 ;) (type $iIiv) (param $0 i32) (param $1 i64) (param $2 i32) + (func $~lib/internal/itoa/utoa64_lut (; 36 ;) (type $iIiv) (param $0 i32) (param $1 i64) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (set_local $3 (i32.load - (i32.const 1472) + (i32.const 1496) ) ) (loop $continue|0 @@ -4232,7 +4219,7 @@ (get_local $2) ) ) - (func $~lib/internal/itoa/utoa64 (; 36 ;) (type $Ii) (param $0 i64) (result i32) + (func $~lib/internal/itoa/utoa64 (; 37 ;) (type $Ii) (param $0 i64) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -4241,7 +4228,7 @@ (get_local $0) ) (return - (i32.const 204) + (i32.const 280) ) ) (if @@ -4282,7 +4269,7 @@ ) (get_local $2) ) - (func $~lib/internal/itoa/itoa64 (; 37 ;) (type $Ii) (param $0 i64) (result i32) + (func $~lib/internal/itoa/itoa64 (; 38 ;) (type $Ii) (param $0 i64) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -4292,7 +4279,7 @@ (get_local $0) ) (return - (i32.const 204) + (i32.const 280) ) ) (if @@ -4360,9 +4347,9 @@ ) (get_local $3) ) - (func $start (; 38 ;) (type $v) + (func $start (; 39 ;) (type $v) (set_global $~lib/allocator/arena/startOffset - (i32.const 2520) + (i32.const 2544) ) (set_global $~lib/allocator/arena/offset (get_global $~lib/allocator/arena/startOffset) @@ -4419,31 +4406,11 @@ ) (if (i32.eqz - (call $~lib/string/String#startsWith - (get_global $std/string/str) + (call $~lib/string/String.__eq + (call $~lib/string/String.fromCharCode + (i32.const 0) + ) (i32.const 112) - (i32.const 0) - ) - ) - (block - (call $~lib/env/abort - (i32.const 0) - (i32.const 48) - (i32.const 15) - (i32.const 0) - ) - (unreachable) - ) - ) - (set_global $~argc - (i32.const 1) - ) - (if - (i32.eqz - (call $~lib/string/String#endsWith|trampoline - (get_global $std/string/str) - (i32.const 132) - (i32.const 0) ) ) (block @@ -4458,10 +4425,11 @@ ) (if (i32.eqz - (call $~lib/string/String#includes - (get_global $std/string/str) - (i32.const 148) - (i32.const 0) + (call $~lib/string/String.__eq + (call $~lib/string/String.fromCharCode + (i32.const 54) + ) + (i32.const 172) ) ) (block @@ -4474,6 +4442,136 @@ (unreachable) ) ) + (if + (i32.eqz + (call $~lib/string/String.__eq + (call $~lib/string/String.fromCharCode + (i32.const 65590) + ) + (i32.const 172) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 48) + (i32.const 18) + (i32.const 0) + ) + (unreachable) + ) + ) + (if + (i32.eqz + (call $~lib/string/String.__eq + (call $~lib/string/String.fromCodePoint + (i32.const 0) + ) + (i32.const 112) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 48) + (i32.const 20) + (i32.const 0) + ) + (unreachable) + ) + ) + (if + (i32.eqz + (call $~lib/string/String.__eq + (call $~lib/string/String.fromCodePoint + (i32.const 54) + ) + (i32.const 172) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 48) + (i32.const 21) + (i32.const 0) + ) + (unreachable) + ) + ) + (if + (i32.eqz + (call $~lib/string/String.fromCodePoint + (i32.const 119558) + ) + ) + (block + (call $~lib/env/abort + (i32.const 180) + (i32.const 48) + (i32.const 22) + (i32.const 0) + ) + (unreachable) + ) + ) + (if + (i32.eqz + (call $~lib/string/String#startsWith + (get_global $std/string/str) + (i32.const 188) + (i32.const 0) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 48) + (i32.const 24) + (i32.const 0) + ) + (unreachable) + ) + ) + (set_global $~argc + (i32.const 1) + ) + (if + (i32.eqz + (call $~lib/string/String#endsWith|trampoline + (get_global $std/string/str) + (i32.const 208) + (i32.const 0) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 48) + (i32.const 25) + (i32.const 0) + ) + (unreachable) + ) + ) + (if + (i32.eqz + (call $~lib/string/String#includes + (get_global $std/string/str) + (i32.const 224) + (i32.const 0) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 48) + (i32.const 26) + (i32.const 0) + ) + (unreachable) + ) + ) (if (call $~lib/string/String#indexOf (i32.const 8) @@ -4484,7 +4582,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 48) - (i32.const 19) + (i32.const 28) (i32.const 0) ) (unreachable) @@ -4494,7 +4592,7 @@ (i32.ne (call $~lib/string/String#indexOf (i32.const 8) - (i32.const 112) + (i32.const 188) (i32.const 0) ) (i32.const -1) @@ -4503,7 +4601,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 48) - (i32.const 20) + (i32.const 29) (i32.const 0) ) (unreachable) @@ -4519,7 +4617,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 48) - (i32.const 21) + (i32.const 30) (i32.const 0) ) (unreachable) @@ -4529,7 +4627,7 @@ (i32.ne (call $~lib/string/String#indexOf (get_global $std/string/str) - (i32.const 160) + (i32.const 236) (i32.const 0) ) (i32.const 2) @@ -4538,7 +4636,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 48) - (i32.const 22) + (i32.const 31) (i32.const 0) ) (unreachable) @@ -4548,7 +4646,7 @@ (i32.ne (call $~lib/string/String#indexOf (get_global $std/string/str) - (i32.const 168) + (i32.const 244) (i32.const 0) ) (i32.const -1) @@ -4557,7 +4655,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 48) - (i32.const 23) + (i32.const 32) (i32.const 0) ) (unreachable) @@ -4567,7 +4665,7 @@ (i32.ne (call $~lib/string/String#indexOf (get_global $std/string/str) - (i32.const 160) + (i32.const 236) (i32.const 2) ) (i32.const 2) @@ -4576,7 +4674,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 48) - (i32.const 24) + (i32.const 33) (i32.const 0) ) (unreachable) @@ -4586,7 +4684,7 @@ (i32.ne (call $~lib/string/String#indexOf (get_global $std/string/str) - (i32.const 160) + (i32.const 236) (i32.const 3) ) (i32.const -1) @@ -4595,7 +4693,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 48) - (i32.const 25) + (i32.const 34) (i32.const 0) ) (unreachable) @@ -4605,7 +4703,7 @@ (i32.ne (call $~lib/string/String#indexOf (get_global $std/string/str) - (i32.const 176) + (i32.const 252) (i32.const -1) ) (i32.const 2) @@ -4614,7 +4712,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 48) - (i32.const 26) + (i32.const 35) (i32.const 0) ) (unreachable) @@ -4633,7 +4731,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 48) - (i32.const 28) + (i32.const 37) (i32.const 0) ) (unreachable) @@ -4646,7 +4744,7 @@ (i32.ne (call $~lib/string/String#lastIndexOf|trampoline (i32.const 8) - (i32.const 112) + (i32.const 188) (i32.const 0) ) (i32.const -1) @@ -4655,7 +4753,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 48) - (i32.const 29) + (i32.const 38) (i32.const 0) ) (unreachable) @@ -4679,7 +4777,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 48) - (i32.const 30) + (i32.const 39) (i32.const 0) ) (unreachable) @@ -4692,7 +4790,7 @@ (i32.ne (call $~lib/string/String#lastIndexOf|trampoline (get_global $std/string/str) - (i32.const 160) + (i32.const 236) (i32.const 0) ) (i32.const 2) @@ -4701,7 +4799,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 48) - (i32.const 31) + (i32.const 40) (i32.const 0) ) (unreachable) @@ -4714,7 +4812,7 @@ (i32.ne (call $~lib/string/String#lastIndexOf|trampoline (get_global $std/string/str) - (i32.const 168) + (i32.const 244) (i32.const 0) ) (i32.const -1) @@ -4723,7 +4821,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 48) - (i32.const 32) + (i32.const 41) (i32.const 0) ) (unreachable) @@ -4736,7 +4834,7 @@ (i32.ne (call $~lib/string/String#lastIndexOf|trampoline (get_global $std/string/str) - (i32.const 188) + (i32.const 264) (i32.const 0) ) (i32.const 15) @@ -4745,7 +4843,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 48) - (i32.const 33) + (i32.const 42) (i32.const 0) ) (unreachable) @@ -4755,7 +4853,7 @@ (i32.ne (call $~lib/string/String#lastIndexOf (get_global $std/string/str) - (i32.const 160) + (i32.const 236) (i32.const 2) ) (i32.const 2) @@ -4764,7 +4862,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 48) - (i32.const 34) + (i32.const 43) (i32.const 0) ) (unreachable) @@ -4774,83 +4872,11 @@ (i32.ne (call $~lib/string/String#lastIndexOf (get_global $std/string/str) - (i32.const 160) + (i32.const 236) (i32.const 3) ) (i32.const 2) ) - (block - (call $~lib/env/abort - (i32.const 0) - (i32.const 48) - (i32.const 35) - (i32.const 0) - ) - (unreachable) - ) - ) - (if - (i32.ne - (call $~lib/string/String#lastIndexOf - (get_global $std/string/str) - (i32.const 176) - (i32.const -1) - ) - (i32.const -1) - ) - (block - (call $~lib/env/abort - (i32.const 0) - (i32.const 48) - (i32.const 36) - (i32.const 0) - ) - (unreachable) - ) - ) - (if - (i32.ne - (call $~lib/string/String#lastIndexOf - (get_global $std/string/str) - (i32.const 196) - (i32.const 0) - ) - (i32.const -1) - ) - (block - (call $~lib/env/abort - (i32.const 0) - (i32.const 48) - (i32.const 37) - (i32.const 0) - ) - (unreachable) - ) - ) - (if - (call $~lib/string/String#lastIndexOf - (get_global $std/string/str) - (i32.const 112) - (i32.const 0) - ) - (block - (call $~lib/env/abort - (i32.const 0) - (i32.const 48) - (i32.const 38) - (i32.const 0) - ) - (unreachable) - ) - ) - (if - (f64.ne - (call $~lib/string/parseInt - (i32.const 204) - (i32.const 0) - ) - (f64.const 0) - ) (block (call $~lib/env/abort (i32.const 0) @@ -4862,12 +4888,13 @@ ) ) (if - (f64.ne - (call $~lib/string/parseInt - (i32.const 212) - (i32.const 0) + (i32.ne + (call $~lib/string/String#lastIndexOf + (get_global $std/string/str) + (i32.const 252) + (i32.const -1) ) - (f64.const 1) + (i32.const -1) ) (block (call $~lib/env/abort @@ -4880,12 +4907,13 @@ ) ) (if - (f64.ne - (call $~lib/string/parseInt - (i32.const 220) + (i32.ne + (call $~lib/string/String#lastIndexOf + (get_global $std/string/str) + (i32.const 272) (i32.const 0) ) - (f64.const 5) + (i32.const -1) ) (block (call $~lib/env/abort @@ -4898,12 +4926,10 @@ ) ) (if - (f64.ne - (call $~lib/string/parseInt - (i32.const 236) - (i32.const 0) - ) - (f64.const 455) + (call $~lib/string/String#lastIndexOf + (get_global $std/string/str) + (i32.const 188) + (i32.const 0) ) (block (call $~lib/env/abort @@ -4918,80 +4944,9 @@ (if (f64.ne (call $~lib/string/parseInt - (i32.const 252) + (i32.const 280) (i32.const 0) ) - (f64.const 3855) - ) - (block - (call $~lib/env/abort - (i32.const 0) - (i32.const 48) - (i32.const 48) - (i32.const 0) - ) - (unreachable) - ) - ) - (if - (f64.ne - (call $~lib/string/parseInt - (i32.const 268) - (i32.const 0) - ) - (f64.const 3855) - ) - (block - (call $~lib/env/abort - (i32.const 0) - (i32.const 48) - (i32.const 49) - (i32.const 0) - ) - (unreachable) - ) - ) - (if - (f64.ne - (call $~lib/string/parseInt - (i32.const 284) - (i32.const 0) - ) - (f64.const 11) - ) - (block - (call $~lib/env/abort - (i32.const 0) - (i32.const 48) - (i32.const 50) - (i32.const 0) - ) - (unreachable) - ) - ) - (if - (f64.ne - (call $~lib/string/parseInt - (i32.const 296) - (i32.const 0) - ) - (f64.const 1) - ) - (block - (call $~lib/env/abort - (i32.const 0) - (i32.const 48) - (i32.const 51) - (i32.const 0) - ) - (unreachable) - ) - ) - (if - (f64.ne - (call $~lib/string/parseFloat - (i32.const 204) - ) (f64.const 0) ) (block @@ -5006,8 +4961,9 @@ ) (if (f64.ne - (call $~lib/string/parseFloat - (i32.const 212) + (call $~lib/string/parseInt + (i32.const 288) + (i32.const 0) ) (f64.const 1) ) @@ -5023,10 +4979,11 @@ ) (if (f64.ne - (call $~lib/string/parseFloat - (i32.const 308) + (call $~lib/string/parseInt + (i32.const 296) + (i32.const 0) ) - (f64.const 0.1) + (f64.const 5) ) (block (call $~lib/env/abort @@ -5040,10 +4997,11 @@ ) (if (f64.ne - (call $~lib/string/parseFloat - (i32.const 320) + (call $~lib/string/parseInt + (i32.const 312) + (i32.const 0) ) - (f64.const 0.25) + (f64.const 455) ) (block (call $~lib/env/abort @@ -5057,10 +5015,11 @@ ) (if (f64.ne - (call $~lib/string/parseFloat - (i32.const 332) + (call $~lib/string/parseInt + (i32.const 328) + (i32.const 0) ) - (f64.const 0.1) + (f64.const 3855) ) (block (call $~lib/env/abort @@ -5072,18 +5031,49 @@ (unreachable) ) ) - (set_global $std/string/c - (call $~lib/string/String.__concat - (i32.const 352) - (i32.const 360) + (if + (f64.ne + (call $~lib/string/parseInt + (i32.const 344) + (i32.const 0) + ) + (f64.const 3855) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 48) + (i32.const 58) + (i32.const 0) + ) + (unreachable) ) ) (if - (i32.eqz - (call $~lib/string/String.__eq - (get_global $std/string/c) - (i32.const 420) + (f64.ne + (call $~lib/string/parseInt + (i32.const 360) + (i32.const 0) ) + (f64.const 11) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 48) + (i32.const 59) + (i32.const 0) + ) + (unreachable) + ) + ) + (if + (f64.ne + (call $~lib/string/parseInt + (i32.const 372) + (i32.const 0) + ) + (f64.const 1) ) (block (call $~lib/env/abort @@ -5095,18 +5085,126 @@ (unreachable) ) ) + (if + (f64.ne + (call $~lib/string/parseFloat + (i32.const 280) + ) + (f64.const 0) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 48) + (i32.const 62) + (i32.const 0) + ) + (unreachable) + ) + ) + (if + (f64.ne + (call $~lib/string/parseFloat + (i32.const 288) + ) + (f64.const 1) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 48) + (i32.const 63) + (i32.const 0) + ) + (unreachable) + ) + ) + (if + (f64.ne + (call $~lib/string/parseFloat + (i32.const 384) + ) + (f64.const 0.1) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 48) + (i32.const 64) + (i32.const 0) + ) + (unreachable) + ) + ) + (if + (f64.ne + (call $~lib/string/parseFloat + (i32.const 396) + ) + (f64.const 0.25) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 48) + (i32.const 65) + (i32.const 0) + ) + (unreachable) + ) + ) + (if + (f64.ne + (call $~lib/string/parseFloat + (i32.const 408) + ) + (f64.const 0.1) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 48) + (i32.const 66) + (i32.const 0) + ) + (unreachable) + ) + ) + (set_global $std/string/c + (call $~lib/string/String.__concat + (i32.const 428) + (i32.const 436) + ) + ) (if (i32.eqz - (call $~lib/string/String.__ne + (call $~lib/string/String.__eq (get_global $std/string/c) - (i32.const 352) + (i32.const 444) ) ) (block (call $~lib/env/abort (i32.const 0) (i32.const 48) - (i32.const 61) + (i32.const 69) + (i32.const 0) + ) + (unreachable) + ) + ) + (if + (i32.eqz + (call $~lib/string/String.__ne + (get_global $std/string/c) + (i32.const 428) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 48) + (i32.const 70) (i32.const 0) ) (unreachable) @@ -5123,7 +5221,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 48) - (i32.const 62) + (i32.const 71) (i32.const 0) ) (unreachable) @@ -5136,119 +5234,6 @@ (get_global $std/string/nullStr) ) ) - (block - (call $~lib/env/abort - (i32.const 0) - (i32.const 48) - (i32.const 63) - (i32.const 0) - ) - (unreachable) - ) - ) - (if - (i32.eqz - (call $~lib/string/String.__gt - (i32.const 360) - (i32.const 352) - ) - ) - (block - (call $~lib/env/abort - (i32.const 0) - (i32.const 48) - (i32.const 65) - (i32.const 0) - ) - (unreachable) - ) - ) - (if - (i32.eqz - (call $~lib/string/String.__gt - (i32.const 428) - (i32.const 352) - ) - ) - (block - (call $~lib/env/abort - (i32.const 0) - (i32.const 48) - (i32.const 66) - (i32.const 0) - ) - (unreachable) - ) - ) - (if - (i32.eqz - (call $~lib/string/String.__gte - (i32.const 428) - (i32.const 436) - ) - ) - (block - (call $~lib/env/abort - (i32.const 0) - (i32.const 48) - (i32.const 67) - (i32.const 0) - ) - (unreachable) - ) - ) - (if - (i32.eqz - (call $~lib/string/String.__gt - (i32.const 428) - (i32.const 420) - ) - ) - (block - (call $~lib/env/abort - (i32.const 0) - (i32.const 48) - (i32.const 68) - (i32.const 0) - ) - (unreachable) - ) - ) - (if - (call $~lib/string/String.__lt - (i32.const 428) - (i32.const 420) - ) - (block - (call $~lib/env/abort - (i32.const 0) - (i32.const 48) - (i32.const 69) - (i32.const 0) - ) - (unreachable) - ) - ) - (if - (call $~lib/string/String.__lt - (i32.const 360) - (get_global $std/string/nullStr) - ) - (block - (call $~lib/env/abort - (i32.const 0) - (i32.const 48) - (i32.const 71) - (i32.const 0) - ) - (unreachable) - ) - ) - (if - (call $~lib/string/String.__lt - (get_global $std/string/nullStr) - (i32.const 360) - ) (block (call $~lib/env/abort (i32.const 0) @@ -5262,8 +5247,8 @@ (if (i32.eqz (call $~lib/string/String.__gt - (i32.const 444) - (i32.const 8) + (i32.const 436) + (i32.const 428) ) ) (block @@ -5278,9 +5263,9 @@ ) (if (i32.eqz - (call $~lib/string/String.__lt - (i32.const 8) - (i32.const 444) + (call $~lib/string/String.__gt + (i32.const 452) + (i32.const 428) ) ) (block @@ -5296,8 +5281,8 @@ (if (i32.eqz (call $~lib/string/String.__gte - (i32.const 444) - (i32.const 8) + (i32.const 452) + (i32.const 460) ) ) (block @@ -5312,8 +5297,8 @@ ) (if (i32.eqz - (call $~lib/string/String.__lte - (i32.const 8) + (call $~lib/string/String.__gt + (i32.const 452) (i32.const 444) ) ) @@ -5329,8 +5314,8 @@ ) (if (call $~lib/string/String.__lt + (i32.const 452) (i32.const 444) - (i32.const 8) ) (block (call $~lib/env/abort @@ -5343,15 +5328,128 @@ ) ) (if - (call $~lib/string/String.__gt - (i32.const 8) - (i32.const 444) + (call $~lib/string/String.__lt + (i32.const 436) + (get_global $std/string/nullStr) ) (block (call $~lib/env/abort (i32.const 0) (i32.const 48) - (i32.const 79) + (i32.const 80) + (i32.const 0) + ) + (unreachable) + ) + ) + (if + (call $~lib/string/String.__lt + (get_global $std/string/nullStr) + (i32.const 436) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 48) + (i32.const 81) + (i32.const 0) + ) + (unreachable) + ) + ) + (if + (i32.eqz + (call $~lib/string/String.__gt + (i32.const 468) + (i32.const 8) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 48) + (i32.const 83) + (i32.const 0) + ) + (unreachable) + ) + ) + (if + (i32.eqz + (call $~lib/string/String.__lt + (i32.const 8) + (i32.const 468) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 48) + (i32.const 84) + (i32.const 0) + ) + (unreachable) + ) + ) + (if + (i32.eqz + (call $~lib/string/String.__gte + (i32.const 468) + (i32.const 8) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 48) + (i32.const 85) + (i32.const 0) + ) + (unreachable) + ) + ) + (if + (i32.eqz + (call $~lib/string/String.__lte + (i32.const 8) + (i32.const 468) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 48) + (i32.const 86) + (i32.const 0) + ) + (unreachable) + ) + ) + (if + (call $~lib/string/String.__lt + (i32.const 468) + (i32.const 8) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 48) + (i32.const 87) + (i32.const 0) + ) + (unreachable) + ) + ) + (if + (call $~lib/string/String.__gt + (i32.const 8) + (i32.const 468) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 48) + (i32.const 88) (i32.const 0) ) (unreachable) @@ -5366,7 +5464,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 48) - (i32.const 80) + (i32.const 89) (i32.const 0) ) (unreachable) @@ -5381,7 +5479,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 48) - (i32.const 81) + (i32.const 90) (i32.const 0) ) (unreachable) @@ -5398,7 +5496,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 48) - (i32.const 82) + (i32.const 91) (i32.const 0) ) (unreachable) @@ -5415,7 +5513,39 @@ (call $~lib/env/abort (i32.const 0) (i32.const 48) - (i32.const 83) + (i32.const 92) + (i32.const 0) + ) + (unreachable) + ) + ) + (set_global $std/string/a + (call $~lib/string/String.fromCodePoint + (i32.const 65377) + ) + ) + (set_global $std/string/b + (call $~lib/string/String.__concat + (call $~lib/string/String.fromCodePoint + (i32.const 55296) + ) + (call $~lib/string/String.fromCodePoint + (i32.const 56322) + ) + ) + ) + (if + (i32.eqz + (call $~lib/string/String.__gt + (get_global $std/string/a) + (get_global $std/string/b) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 48) + (i32.const 96) (i32.const 0) ) (unreachable) @@ -5424,7 +5554,7 @@ (if (i32.ne (i32.load - (i32.const 456) + (i32.const 480) ) (i32.const 3) ) @@ -5432,7 +5562,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 48) - (i32.const 85) + (i32.const 98) (i32.const 0) ) (unreachable) @@ -5448,242 +5578,6 @@ (i32.const 8) ) ) - (block - (call $~lib/env/abort - (i32.const 0) - (i32.const 48) - (i32.const 87) - (i32.const 0) - ) - (unreachable) - ) - ) - (if - (i32.eqz - (call $~lib/string/String.__eq - (call $~lib/string/String#repeat - (i32.const 352) - (i32.const 0) - ) - (i32.const 8) - ) - ) - (block - (call $~lib/env/abort - (i32.const 0) - (i32.const 48) - (i32.const 88) - (i32.const 0) - ) - (unreachable) - ) - ) - (if - (i32.eqz - (call $~lib/string/String.__eq - (call $~lib/string/String#repeat - (i32.const 352) - (i32.const 1) - ) - (i32.const 352) - ) - ) - (block - (call $~lib/env/abort - (i32.const 0) - (i32.const 48) - (i32.const 89) - (i32.const 0) - ) - (unreachable) - ) - ) - (if - (i32.eqz - (call $~lib/string/String.__eq - (call $~lib/string/String#repeat - (i32.const 352) - (i32.const 2) - ) - (i32.const 436) - ) - ) - (block - (call $~lib/env/abort - (i32.const 0) - (i32.const 48) - (i32.const 90) - (i32.const 0) - ) - (unreachable) - ) - ) - (if - (i32.eqz - (call $~lib/string/String.__eq - (call $~lib/string/String#repeat - (i32.const 352) - (i32.const 3) - ) - (i32.const 468) - ) - ) - (block - (call $~lib/env/abort - (i32.const 0) - (i32.const 48) - (i32.const 91) - (i32.const 0) - ) - (unreachable) - ) - ) - (if - (i32.eqz - (call $~lib/string/String.__eq - (call $~lib/string/String#repeat - (i32.const 420) - (i32.const 4) - ) - (i32.const 480) - ) - ) - (block - (call $~lib/env/abort - (i32.const 0) - (i32.const 48) - (i32.const 92) - (i32.const 0) - ) - (unreachable) - ) - ) - (if - (i32.eqz - (call $~lib/string/String.__eq - (call $~lib/string/String#repeat - (i32.const 352) - (i32.const 5) - ) - (i32.const 500) - ) - ) - (block - (call $~lib/env/abort - (i32.const 0) - (i32.const 48) - (i32.const 93) - (i32.const 0) - ) - (unreachable) - ) - ) - (if - (i32.eqz - (call $~lib/string/String.__eq - (call $~lib/string/String#repeat - (i32.const 352) - (i32.const 6) - ) - (i32.const 516) - ) - ) - (block - (call $~lib/env/abort - (i32.const 0) - (i32.const 48) - (i32.const 94) - (i32.const 0) - ) - (unreachable) - ) - ) - (if - (i32.eqz - (call $~lib/string/String.__eq - (call $~lib/string/String#repeat - (i32.const 352) - (i32.const 7) - ) - (i32.const 532) - ) - ) - (block - (call $~lib/env/abort - (i32.const 0) - (i32.const 48) - (i32.const 95) - (i32.const 0) - ) - (unreachable) - ) - ) - (if - (i32.eqz - (call $~lib/string/String.__eq - (call $~lib/internal/itoa/itoa32 - (i32.const 0) - ) - (i32.const 204) - ) - ) - (block - (call $~lib/env/abort - (i32.const 0) - (i32.const 48) - (i32.const 97) - (i32.const 0) - ) - (unreachable) - ) - ) - (if - (i32.eqz - (call $~lib/string/String.__eq - (call $~lib/internal/itoa/itoa32 - (i32.const 1) - ) - (i32.const 212) - ) - ) - (block - (call $~lib/env/abort - (i32.const 0) - (i32.const 48) - (i32.const 98) - (i32.const 0) - ) - (unreachable) - ) - ) - (if - (i32.eqz - (call $~lib/string/String.__eq - (call $~lib/internal/itoa/itoa32 - (i32.const 8) - ) - (i32.const 1144) - ) - ) - (block - (call $~lib/env/abort - (i32.const 0) - (i32.const 48) - (i32.const 99) - (i32.const 0) - ) - (unreachable) - ) - ) - (if - (i32.eqz - (call $~lib/string/String.__eq - (call $~lib/internal/itoa/itoa32 - (i32.const 123) - ) - (i32.const 456) - ) - ) (block (call $~lib/env/abort (i32.const 0) @@ -5697,10 +5591,11 @@ (if (i32.eqz (call $~lib/string/String.__eq - (call $~lib/internal/itoa/itoa32 - (i32.const -1000) + (call $~lib/string/String#repeat + (i32.const 428) + (i32.const 0) ) - (i32.const 1152) + (i32.const 8) ) ) (block @@ -5716,10 +5611,11 @@ (if (i32.eqz (call $~lib/string/String.__eq - (call $~lib/internal/itoa/itoa32 - (i32.const 1234) + (call $~lib/string/String#repeat + (i32.const 428) + (i32.const 1) ) - (i32.const 1168) + (i32.const 428) ) ) (block @@ -5735,10 +5631,11 @@ (if (i32.eqz (call $~lib/string/String.__eq - (call $~lib/internal/itoa/itoa32 - (i32.const 12345) + (call $~lib/string/String#repeat + (i32.const 428) + (i32.const 2) ) - (i32.const 1180) + (i32.const 460) ) ) (block @@ -5754,10 +5651,11 @@ (if (i32.eqz (call $~lib/string/String.__eq - (call $~lib/internal/itoa/itoa32 - (i32.const 123456) + (call $~lib/string/String#repeat + (i32.const 428) + (i32.const 3) ) - (i32.const 1196) + (i32.const 492) ) ) (block @@ -5773,10 +5671,11 @@ (if (i32.eqz (call $~lib/string/String.__eq - (call $~lib/internal/itoa/itoa32 - (i32.const 1111111) + (call $~lib/string/String#repeat + (i32.const 444) + (i32.const 4) ) - (i32.const 1212) + (i32.const 504) ) ) (block @@ -5792,10 +5691,11 @@ (if (i32.eqz (call $~lib/string/String.__eq - (call $~lib/internal/itoa/itoa32 - (i32.const 1234567) + (call $~lib/string/String#repeat + (i32.const 428) + (i32.const 5) ) - (i32.const 1232) + (i32.const 524) ) ) (block @@ -5811,10 +5711,11 @@ (if (i32.eqz (call $~lib/string/String.__eq - (call $~lib/internal/itoa/itoa32 - (i32.const 2147483646) + (call $~lib/string/String#repeat + (i32.const 428) + (i32.const 6) ) - (i32.const 1252) + (i32.const 540) ) ) (block @@ -5830,10 +5731,11 @@ (if (i32.eqz (call $~lib/string/String.__eq - (call $~lib/internal/itoa/itoa32 - (i32.const 2147483647) + (call $~lib/string/String#repeat + (i32.const 428) + (i32.const 7) ) - (i32.const 1276) + (i32.const 556) ) ) (block @@ -5850,28 +5752,9 @@ (i32.eqz (call $~lib/string/String.__eq (call $~lib/internal/itoa/itoa32 - (i32.const -2147483648) + (i32.const 0) ) - (i32.const 1300) - ) - ) - (block - (call $~lib/env/abort - (i32.const 0) - (i32.const 48) - (i32.const 109) - (i32.const 0) - ) - (unreachable) - ) - ) - (if - (i32.eqz - (call $~lib/string/String.__eq - (call $~lib/internal/itoa/itoa32 - (i32.const -1) - ) - (i32.const 1328) + (i32.const 280) ) ) (block @@ -5887,10 +5770,29 @@ (if (i32.eqz (call $~lib/string/String.__eq - (call $~lib/internal/itoa/utoa32 - (i32.const 0) + (call $~lib/internal/itoa/itoa32 + (i32.const 1) ) - (i32.const 204) + (i32.const 288) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 48) + (i32.const 111) + (i32.const 0) + ) + (unreachable) + ) + ) + (if + (i32.eqz + (call $~lib/string/String.__eq + (call $~lib/internal/itoa/itoa32 + (i32.const 8) + ) + (i32.const 1168) ) ) (block @@ -5906,10 +5808,10 @@ (if (i32.eqz (call $~lib/string/String.__eq - (call $~lib/internal/itoa/utoa32 - (i32.const 1000) + (call $~lib/internal/itoa/itoa32 + (i32.const 123) ) - (i32.const 1336) + (i32.const 480) ) ) (block @@ -5925,10 +5827,10 @@ (if (i32.eqz (call $~lib/string/String.__eq - (call $~lib/internal/itoa/utoa32 - (i32.const 2147483647) + (call $~lib/internal/itoa/itoa32 + (i32.const -1000) ) - (i32.const 1276) + (i32.const 1176) ) ) (block @@ -5944,10 +5846,10 @@ (if (i32.eqz (call $~lib/string/String.__eq - (call $~lib/internal/itoa/utoa32 - (i32.const -2147483648) + (call $~lib/internal/itoa/itoa32 + (i32.const 1234) ) - (i32.const 1348) + (i32.const 1192) ) ) (block @@ -5963,10 +5865,10 @@ (if (i32.eqz (call $~lib/string/String.__eq - (call $~lib/internal/itoa/utoa32 - (i32.const -1) + (call $~lib/internal/itoa/itoa32 + (i32.const 12345) ) - (i32.const 1372) + (i32.const 1204) ) ) (block @@ -5982,10 +5884,29 @@ (if (i32.eqz (call $~lib/string/String.__eq - (call $~lib/internal/itoa/utoa64 - (i64.const 0) + (call $~lib/internal/itoa/itoa32 + (i32.const 123456) ) - (i32.const 204) + (i32.const 1220) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 48) + (i32.const 117) + (i32.const 0) + ) + (unreachable) + ) + ) + (if + (i32.eqz + (call $~lib/string/String.__eq + (call $~lib/internal/itoa/itoa32 + (i32.const 1111111) + ) + (i32.const 1236) ) ) (block @@ -6001,10 +5922,10 @@ (if (i32.eqz (call $~lib/string/String.__eq - (call $~lib/internal/itoa/utoa64 - (i64.const 1234) + (call $~lib/internal/itoa/itoa32 + (i32.const 1234567) ) - (i32.const 1168) + (i32.const 1256) ) ) (block @@ -6020,10 +5941,10 @@ (if (i32.eqz (call $~lib/string/String.__eq - (call $~lib/internal/itoa/utoa64 - (i64.const 99999999) + (call $~lib/internal/itoa/itoa32 + (i32.const 2147483646) ) - (i32.const 1992) + (i32.const 1276) ) ) (block @@ -6039,10 +5960,10 @@ (if (i32.eqz (call $~lib/string/String.__eq - (call $~lib/internal/itoa/utoa64 - (i64.const 100000000) + (call $~lib/internal/itoa/itoa32 + (i32.const 2147483647) ) - (i32.const 2012) + (i32.const 1300) ) ) (block @@ -6058,10 +5979,10 @@ (if (i32.eqz (call $~lib/string/String.__eq - (call $~lib/internal/itoa/utoa64 - (i64.const 4294967295) + (call $~lib/internal/itoa/itoa32 + (i32.const -2147483648) ) - (i32.const 1372) + (i32.const 1324) ) ) (block @@ -6077,10 +5998,10 @@ (if (i32.eqz (call $~lib/string/String.__eq - (call $~lib/internal/itoa/utoa64 - (i64.const 68719476735) + (call $~lib/internal/itoa/itoa32 + (i32.const -1) ) - (i32.const 2036) + (i32.const 1352) ) ) (block @@ -6096,29 +6017,10 @@ (if (i32.eqz (call $~lib/string/String.__eq - (call $~lib/internal/itoa/utoa64 - (i64.const 868719476735) + (call $~lib/internal/itoa/utoa32 + (i32.const 0) ) - (i32.const 2064) - ) - ) - (block - (call $~lib/env/abort - (i32.const 0) - (i32.const 48) - (i32.const 124) - (i32.const 0) - ) - (unreachable) - ) - ) - (if - (i32.eqz - (call $~lib/string/String.__eq - (call $~lib/internal/itoa/utoa64 - (i64.const 999868719476735) - ) - (i32.const 2092) + (i32.const 280) ) ) (block @@ -6134,10 +6036,10 @@ (if (i32.eqz (call $~lib/string/String.__eq - (call $~lib/internal/itoa/utoa64 - (i64.const 9999868719476735) + (call $~lib/internal/itoa/utoa32 + (i32.const 1000) ) - (i32.const 2128) + (i32.const 1360) ) ) (block @@ -6153,10 +6055,10 @@ (if (i32.eqz (call $~lib/string/String.__eq - (call $~lib/internal/itoa/utoa64 - (i64.const 19999868719476735) + (call $~lib/internal/itoa/utoa32 + (i32.const 2147483647) ) - (i32.const 2164) + (i32.const 1300) ) ) (block @@ -6172,10 +6074,10 @@ (if (i32.eqz (call $~lib/string/String.__eq - (call $~lib/internal/itoa/utoa64 - (i64.const -1) + (call $~lib/internal/itoa/utoa32 + (i32.const -2147483648) ) - (i32.const 2204) + (i32.const 1372) ) ) (block @@ -6191,17 +6093,17 @@ (if (i32.eqz (call $~lib/string/String.__eq - (call $~lib/internal/itoa/itoa64 - (i64.const 0) + (call $~lib/internal/itoa/utoa32 + (i32.const -1) ) - (i32.const 204) + (i32.const 1396) ) ) (block (call $~lib/env/abort (i32.const 0) (i32.const 48) - (i32.const 130) + (i32.const 129) (i32.const 0) ) (unreachable) @@ -6210,10 +6112,10 @@ (if (i32.eqz (call $~lib/string/String.__eq - (call $~lib/internal/itoa/itoa64 - (i64.const -1234) + (call $~lib/internal/itoa/utoa64 + (i64.const 0) ) - (i32.const 2248) + (i32.const 280) ) ) (block @@ -6229,10 +6131,10 @@ (if (i32.eqz (call $~lib/string/String.__eq - (call $~lib/internal/itoa/itoa64 - (i64.const 4294967295) + (call $~lib/internal/itoa/utoa64 + (i64.const 1234) ) - (i32.const 1372) + (i32.const 1192) ) ) (block @@ -6248,10 +6150,10 @@ (if (i32.eqz (call $~lib/string/String.__eq - (call $~lib/internal/itoa/itoa64 - (i64.const -4294967295) + (call $~lib/internal/itoa/utoa64 + (i64.const 99999999) ) - (i32.const 2264) + (i32.const 2016) ) ) (block @@ -6267,8 +6169,8 @@ (if (i32.eqz (call $~lib/string/String.__eq - (call $~lib/internal/itoa/itoa64 - (i64.const 68719476735) + (call $~lib/internal/itoa/utoa64 + (i64.const 100000000) ) (i32.const 2036) ) @@ -6286,10 +6188,10 @@ (if (i32.eqz (call $~lib/string/String.__eq - (call $~lib/internal/itoa/itoa64 - (i64.const -68719476735) + (call $~lib/internal/itoa/utoa64 + (i64.const 4294967295) ) - (i32.const 2292) + (i32.const 1396) ) ) (block @@ -6305,10 +6207,10 @@ (if (i32.eqz (call $~lib/string/String.__eq - (call $~lib/internal/itoa/itoa64 - (i64.const -868719476735) + (call $~lib/internal/itoa/utoa64 + (i64.const 68719476735) ) - (i32.const 2320) + (i32.const 2060) ) ) (block @@ -6324,10 +6226,10 @@ (if (i32.eqz (call $~lib/string/String.__eq - (call $~lib/internal/itoa/itoa64 - (i64.const -999868719476735) + (call $~lib/internal/itoa/utoa64 + (i64.const 868719476735) ) - (i32.const 2352) + (i32.const 2088) ) ) (block @@ -6343,10 +6245,10 @@ (if (i32.eqz (call $~lib/string/String.__eq - (call $~lib/internal/itoa/itoa64 - (i64.const -19999868719476735) + (call $~lib/internal/itoa/utoa64 + (i64.const 999868719476735) ) - (i32.const 2388) + (i32.const 2116) ) ) (block @@ -6362,10 +6264,10 @@ (if (i32.eqz (call $~lib/string/String.__eq - (call $~lib/internal/itoa/itoa64 - (i64.const 9223372036854775807) + (call $~lib/internal/itoa/utoa64 + (i64.const 9999868719476735) ) - (i32.const 2428) + (i32.const 2152) ) ) (block @@ -6381,10 +6283,10 @@ (if (i32.eqz (call $~lib/string/String.__eq - (call $~lib/internal/itoa/itoa64 - (i64.const -9223372036854775808) + (call $~lib/internal/itoa/utoa64 + (i64.const 19999868719476735) ) - (i32.const 2472) + (i32.const 2188) ) ) (block @@ -6397,5 +6299,233 @@ (unreachable) ) ) + (if + (i32.eqz + (call $~lib/string/String.__eq + (call $~lib/internal/itoa/utoa64 + (i64.const -1) + ) + (i32.const 2228) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 48) + (i32.const 141) + (i32.const 0) + ) + (unreachable) + ) + ) + (if + (i32.eqz + (call $~lib/string/String.__eq + (call $~lib/internal/itoa/itoa64 + (i64.const 0) + ) + (i32.const 280) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 48) + (i32.const 143) + (i32.const 0) + ) + (unreachable) + ) + ) + (if + (i32.eqz + (call $~lib/string/String.__eq + (call $~lib/internal/itoa/itoa64 + (i64.const -1234) + ) + (i32.const 2272) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 48) + (i32.const 144) + (i32.const 0) + ) + (unreachable) + ) + ) + (if + (i32.eqz + (call $~lib/string/String.__eq + (call $~lib/internal/itoa/itoa64 + (i64.const 4294967295) + ) + (i32.const 1396) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 48) + (i32.const 145) + (i32.const 0) + ) + (unreachable) + ) + ) + (if + (i32.eqz + (call $~lib/string/String.__eq + (call $~lib/internal/itoa/itoa64 + (i64.const -4294967295) + ) + (i32.const 2288) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 48) + (i32.const 146) + (i32.const 0) + ) + (unreachable) + ) + ) + (if + (i32.eqz + (call $~lib/string/String.__eq + (call $~lib/internal/itoa/itoa64 + (i64.const 68719476735) + ) + (i32.const 2060) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 48) + (i32.const 147) + (i32.const 0) + ) + (unreachable) + ) + ) + (if + (i32.eqz + (call $~lib/string/String.__eq + (call $~lib/internal/itoa/itoa64 + (i64.const -68719476735) + ) + (i32.const 2316) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 48) + (i32.const 148) + (i32.const 0) + ) + (unreachable) + ) + ) + (if + (i32.eqz + (call $~lib/string/String.__eq + (call $~lib/internal/itoa/itoa64 + (i64.const -868719476735) + ) + (i32.const 2344) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 48) + (i32.const 149) + (i32.const 0) + ) + (unreachable) + ) + ) + (if + (i32.eqz + (call $~lib/string/String.__eq + (call $~lib/internal/itoa/itoa64 + (i64.const -999868719476735) + ) + (i32.const 2376) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 48) + (i32.const 150) + (i32.const 0) + ) + (unreachable) + ) + ) + (if + (i32.eqz + (call $~lib/string/String.__eq + (call $~lib/internal/itoa/itoa64 + (i64.const -19999868719476735) + ) + (i32.const 2412) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 48) + (i32.const 151) + (i32.const 0) + ) + (unreachable) + ) + ) + (if + (i32.eqz + (call $~lib/string/String.__eq + (call $~lib/internal/itoa/itoa64 + (i64.const 9223372036854775807) + ) + (i32.const 2452) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 48) + (i32.const 152) + (i32.const 0) + ) + (unreachable) + ) + ) + (if + (i32.eqz + (call $~lib/string/String.__eq + (call $~lib/internal/itoa/itoa64 + (i64.const -9223372036854775808) + ) + (i32.const 2496) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 48) + (i32.const 153) + (i32.const 0) + ) + (unreachable) + ) + ) ) ) diff --git a/tests/compiler/std/string.ts b/tests/compiler/std/string.ts index 2b3bba90..22bdf6b1 100644 --- a/tests/compiler/std/string.ts +++ b/tests/compiler/std/string.ts @@ -12,6 +12,15 @@ assert(changetype(str) == changetype("hi, I'm a string")); assert(str.length == 16); assert(str.charCodeAt(0) == 0x68); + +assert(String.fromCharCode(0) == "\0"); +assert(String.fromCharCode(54) == "6"); +assert(String.fromCharCode(0x10000 + 54) == "6"); + +assert(String.fromCodePoint(0) == "\0"); +assert(String.fromCodePoint(54) == "6"); +assert(String.fromCodePoint(0x1D306), "\uD834\uDF06"); + assert(str.startsWith("hi")); assert(str.endsWith("string")); assert(str.includes("I'm")); @@ -82,6 +91,10 @@ assert(!("" > "")); assert("" >= ""); assert("" <= ""); +var a = String.fromCodePoint(0xFF61); +var b = String.fromCodePoint(0xD800) + String.fromCodePoint(0xDC02); +assert(a > b); + assert("123".length == 3); assert("".repeat(100) == ""); diff --git a/tests/compiler/std/string.untouched.wat b/tests/compiler/std/string.untouched.wat index fc31eac9..a01ca93f 100644 --- a/tests/compiler/std/string.untouched.wat +++ b/tests/compiler/std/string.untouched.wat @@ -1,11 +1,11 @@ (module (type $iiiiv (func (param i32 i32 i32 i32))) (type $iii (func (param i32 i32) (result i32))) + (type $ii (func (param i32) (result i32))) (type $iiii (func (param i32 i32 i32) (result i32))) (type $i (func (result i32))) (type $iiF (func (param i32 i32) (result f64))) (type $iF (func (param i32) (result f64))) - (type $ii (func (param i32) (result i32))) (type $iiiv (func (param i32 i32 i32))) (type $Ii (func (param i64) (result i32))) (type $iIiv (func (param i32 i64 i32))) @@ -53,84 +53,89 @@ (global $~lib/internal/string/CharCode.x i32 (i32.const 120)) (global $~lib/internal/string/CharCode.z i32 (i32.const 122)) (global $std/string/c (mut i32) (i32.const 0)) + (global $std/string/a (mut i32) (i32.const 0)) + (global $std/string/b (mut i32) (i32.const 0)) (global $ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $~lib/builtins/u64.MAX_VALUE i64 (i64.const -1)) (global $~lib/builtins/i64.MAX_VALUE i64 (i64.const 9223372036854775807)) (global $~lib/builtins/i64.MIN_VALUE i64 (i64.const -9223372036854775808)) - (global $HEAP_BASE i32 (i32.const 2516)) + (global $HEAP_BASE i32 (i32.const 2540)) (memory $0 1) (data (i32.const 8) "\00\00\00\00") (data (i32.const 12) "\10\00\00\00h\00i\00,\00 \00I\00\'\00m\00 \00a\00 \00s\00t\00r\00i\00n\00g\00") (data (i32.const 48) "\0d\00\00\00s\00t\00d\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s\00") (data (i32.const 80) "\0e\00\00\00~\00l\00i\00b\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s\00") - (data (i32.const 112) "\02\00\00\00h\00i\00") - (data (i32.const 120) "\04\00\00\00n\00u\00l\00l\00") - (data (i32.const 132) "\06\00\00\00s\00t\00r\00i\00n\00g\00") - (data (i32.const 148) "\03\00\00\00I\00\'\00m\00") - (data (i32.const 160) "\01\00\00\00,\00") - (data (i32.const 168) "\01\00\00\00x\00") - (data (i32.const 176) "\03\00\00\00,\00 \00I\00") - (data (i32.const 188) "\01\00\00\00g\00") - (data (i32.const 196) "\01\00\00\00i\00") - (data (i32.const 204) "\01\00\00\000\00") - (data (i32.const 212) "\01\00\00\001\00") - (data (i32.const 220) "\05\00\00\000\00b\001\000\001\00") - (data (i32.const 236) "\05\00\00\000\00o\007\000\007\00") - (data (i32.const 252) "\05\00\00\000\00x\00f\000\00f\00") - (data (i32.const 268) "\05\00\00\000\00x\00F\000\00F\00") - (data (i32.const 284) "\03\00\00\000\001\001\00") - (data (i32.const 296) "\04\00\00\000\00x\001\00g\00") - (data (i32.const 308) "\03\00\00\000\00.\001\00") - (data (i32.const 320) "\03\00\00\00.\002\005\00") - (data (i32.const 332) "\08\00\00\00.\001\00f\00o\00o\00b\00a\00r\00") - (data (i32.const 352) "\01\00\00\00a\00") - (data (i32.const 360) "\01\00\00\00b\00") - (data (i32.const 368) "\17\00\00\00~\00l\00i\00b\00/\00i\00n\00t\00e\00r\00n\00a\00l\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s\00") - (data (i32.const 420) "\02\00\00\00a\00b\00") - (data (i32.const 428) "\02\00\00\00b\00a\00") - (data (i32.const 436) "\02\00\00\00a\00a\00") - (data (i32.const 444) "\03\00\00\00a\00b\00c\00") - (data (i32.const 456) "\03\00\00\001\002\003\00") - (data (i32.const 468) "\03\00\00\00a\00a\00a\00") - (data (i32.const 480) "\08\00\00\00a\00b\00a\00b\00a\00b\00a\00b\00") - (data (i32.const 500) "\05\00\00\00a\00a\00a\00a\00a\00") - (data (i32.const 516) "\06\00\00\00a\00a\00a\00a\00a\00a\00") - (data (i32.const 532) "\07\00\00\00a\00a\00a\00a\00a\00a\00a\00") - (data (i32.const 552) "0\02\00\00\n\00\00\00(\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00d\00\00\00\e8\03\00\00\10\'\00\00\a0\86\01\00@B\0f\00\80\96\98\00\00\e1\f5\05\00\ca\9a;\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 624) "x\02\00\00d\00\00\00\90\01\00\00\00\00\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 1144) "\01\00\00\008\00") - (data (i32.const 1152) "\05\00\00\00-\001\000\000\000\00") - (data (i32.const 1168) "\04\00\00\001\002\003\004\00") - (data (i32.const 1180) "\05\00\00\001\002\003\004\005\00") - (data (i32.const 1196) "\06\00\00\001\002\003\004\005\006\00") - (data (i32.const 1212) "\07\00\00\001\001\001\001\001\001\001\00") - (data (i32.const 1232) "\07\00\00\001\002\003\004\005\006\007\00") - (data (i32.const 1252) "\n\00\00\002\001\004\007\004\008\003\006\004\006\00") - (data (i32.const 1276) "\n\00\00\002\001\004\007\004\008\003\006\004\007\00") - (data (i32.const 1300) "\0b\00\00\00-\002\001\004\007\004\008\003\006\004\008\00") - (data (i32.const 1328) "\02\00\00\00-\001\00") - (data (i32.const 1336) "\04\00\00\001\000\000\000\00") - (data (i32.const 1348) "\n\00\00\002\001\004\007\004\008\003\006\004\008\00") - (data (i32.const 1372) "\n\00\00\004\002\009\004\009\006\007\002\009\005\00") - (data (i32.const 1400) "\80\05\00\00\n\00\00\00(\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00d\00\00\00\e8\03\00\00\10\'\00\00\a0\86\01\00@B\0f\00\80\96\98\00\00\e1\f5\05\00\ca\9a;\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 1472) "\c8\05\00\00d\00\00\00\90\01\00\00\00\00\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 1992) "\08\00\00\009\009\009\009\009\009\009\009\00") - (data (i32.const 2012) "\t\00\00\001\000\000\000\000\000\000\000\000\00") - (data (i32.const 2036) "\0b\00\00\006\008\007\001\009\004\007\006\007\003\005\00") - (data (i32.const 2064) "\0c\00\00\008\006\008\007\001\009\004\007\006\007\003\005\00") - (data (i32.const 2092) "\0f\00\00\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005\00") - (data (i32.const 2128) "\10\00\00\009\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005\00") - (data (i32.const 2164) "\11\00\00\001\009\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005\00") - (data (i32.const 2204) "\14\00\00\001\008\004\004\006\007\004\004\000\007\003\007\000\009\005\005\001\006\001\005\00") - (data (i32.const 2248) "\05\00\00\00-\001\002\003\004\00") - (data (i32.const 2264) "\0b\00\00\00-\004\002\009\004\009\006\007\002\009\005\00") - (data (i32.const 2292) "\0c\00\00\00-\006\008\007\001\009\004\007\006\007\003\005\00") - (data (i32.const 2320) "\0d\00\00\00-\008\006\008\007\001\009\004\007\006\007\003\005\00") - (data (i32.const 2352) "\10\00\00\00-\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005\00") - (data (i32.const 2388) "\12\00\00\00-\001\009\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005\00") - (data (i32.const 2428) "\13\00\00\009\002\002\003\003\007\002\000\003\006\008\005\004\007\007\005\008\000\007\00") - (data (i32.const 2472) "\14\00\00\00-\009\002\002\003\003\007\002\000\003\006\008\005\004\007\007\005\008\000\008\00") + (data (i32.const 112) "\01\00\00\00\00\00") + (data (i32.const 120) "\17\00\00\00~\00l\00i\00b\00/\00i\00n\00t\00e\00r\00n\00a\00l\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s\00") + (data (i32.const 172) "\01\00\00\006\00") + (data (i32.const 180) "\02\00\00\004\d8\06\df") + (data (i32.const 188) "\02\00\00\00h\00i\00") + (data (i32.const 196) "\04\00\00\00n\00u\00l\00l\00") + (data (i32.const 208) "\06\00\00\00s\00t\00r\00i\00n\00g\00") + (data (i32.const 224) "\03\00\00\00I\00\'\00m\00") + (data (i32.const 236) "\01\00\00\00,\00") + (data (i32.const 244) "\01\00\00\00x\00") + (data (i32.const 252) "\03\00\00\00,\00 \00I\00") + (data (i32.const 264) "\01\00\00\00g\00") + (data (i32.const 272) "\01\00\00\00i\00") + (data (i32.const 280) "\01\00\00\000\00") + (data (i32.const 288) "\01\00\00\001\00") + (data (i32.const 296) "\05\00\00\000\00b\001\000\001\00") + (data (i32.const 312) "\05\00\00\000\00o\007\000\007\00") + (data (i32.const 328) "\05\00\00\000\00x\00f\000\00f\00") + (data (i32.const 344) "\05\00\00\000\00x\00F\000\00F\00") + (data (i32.const 360) "\03\00\00\000\001\001\00") + (data (i32.const 372) "\04\00\00\000\00x\001\00g\00") + (data (i32.const 384) "\03\00\00\000\00.\001\00") + (data (i32.const 396) "\03\00\00\00.\002\005\00") + (data (i32.const 408) "\08\00\00\00.\001\00f\00o\00o\00b\00a\00r\00") + (data (i32.const 428) "\01\00\00\00a\00") + (data (i32.const 436) "\01\00\00\00b\00") + (data (i32.const 444) "\02\00\00\00a\00b\00") + (data (i32.const 452) "\02\00\00\00b\00a\00") + (data (i32.const 460) "\02\00\00\00a\00a\00") + (data (i32.const 468) "\03\00\00\00a\00b\00c\00") + (data (i32.const 480) "\03\00\00\001\002\003\00") + (data (i32.const 492) "\03\00\00\00a\00a\00a\00") + (data (i32.const 504) "\08\00\00\00a\00b\00a\00b\00a\00b\00a\00b\00") + (data (i32.const 524) "\05\00\00\00a\00a\00a\00a\00a\00") + (data (i32.const 540) "\06\00\00\00a\00a\00a\00a\00a\00a\00") + (data (i32.const 556) "\07\00\00\00a\00a\00a\00a\00a\00a\00a\00") + (data (i32.const 576) "H\02\00\00\n\00\00\00(\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00d\00\00\00\e8\03\00\00\10\'\00\00\a0\86\01\00@B\0f\00\80\96\98\00\00\e1\f5\05\00\ca\9a;\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 648) "\90\02\00\00d\00\00\00\90\01\00\00\00\00\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 1168) "\01\00\00\008\00") + (data (i32.const 1176) "\05\00\00\00-\001\000\000\000\00") + (data (i32.const 1192) "\04\00\00\001\002\003\004\00") + (data (i32.const 1204) "\05\00\00\001\002\003\004\005\00") + (data (i32.const 1220) "\06\00\00\001\002\003\004\005\006\00") + (data (i32.const 1236) "\07\00\00\001\001\001\001\001\001\001\00") + (data (i32.const 1256) "\07\00\00\001\002\003\004\005\006\007\00") + (data (i32.const 1276) "\n\00\00\002\001\004\007\004\008\003\006\004\006\00") + (data (i32.const 1300) "\n\00\00\002\001\004\007\004\008\003\006\004\007\00") + (data (i32.const 1324) "\0b\00\00\00-\002\001\004\007\004\008\003\006\004\008\00") + (data (i32.const 1352) "\02\00\00\00-\001\00") + (data (i32.const 1360) "\04\00\00\001\000\000\000\00") + (data (i32.const 1372) "\n\00\00\002\001\004\007\004\008\003\006\004\008\00") + (data (i32.const 1396) "\n\00\00\004\002\009\004\009\006\007\002\009\005\00") + (data (i32.const 1424) "\98\05\00\00\n\00\00\00(\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00d\00\00\00\e8\03\00\00\10\'\00\00\a0\86\01\00@B\0f\00\80\96\98\00\00\e1\f5\05\00\ca\9a;\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 1496) "\e0\05\00\00d\00\00\00\90\01\00\00\00\00\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 2016) "\08\00\00\009\009\009\009\009\009\009\009\00") + (data (i32.const 2036) "\t\00\00\001\000\000\000\000\000\000\000\000\00") + (data (i32.const 2060) "\0b\00\00\006\008\007\001\009\004\007\006\007\003\005\00") + (data (i32.const 2088) "\0c\00\00\008\006\008\007\001\009\004\007\006\007\003\005\00") + (data (i32.const 2116) "\0f\00\00\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005\00") + (data (i32.const 2152) "\10\00\00\009\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005\00") + (data (i32.const 2188) "\11\00\00\001\009\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005\00") + (data (i32.const 2228) "\14\00\00\001\008\004\004\006\007\004\004\000\007\003\007\000\009\005\005\001\006\001\005\00") + (data (i32.const 2272) "\05\00\00\00-\001\002\003\004\00") + (data (i32.const 2288) "\0b\00\00\00-\004\002\009\004\009\006\007\002\009\005\00") + (data (i32.const 2316) "\0c\00\00\00-\006\008\007\001\009\004\007\006\007\003\005\00") + (data (i32.const 2344) "\0d\00\00\00-\008\006\008\007\001\009\004\007\006\007\003\005\00") + (data (i32.const 2376) "\10\00\00\00-\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005\00") + (data (i32.const 2412) "\12\00\00\00-\001\009\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005\00") + (data (i32.const 2452) "\13\00\00\009\002\002\003\003\007\002\000\003\006\008\005\004\007\007\005\008\000\007\00") + (data (i32.const 2496) "\14\00\00\00-\009\002\002\003\003\007\002\000\003\006\008\005\004\007\007\005\008\000\008\00") (export "memory" (memory $0)) (export "getString" (func $std/string/getString)) (start $start) @@ -146,7 +151,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 80) - (i32.const 48) + (i32.const 75) (i32.const 4) ) (unreachable) @@ -173,36 +178,211 @@ ) ) ) - (func $~lib/memory/memcmp (; 2 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/allocator/arena/__memory_allocate (; 2 ;) (type $ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) (if - (i32.eq + (get_local $0) + (block + (if + (i32.gt_u + (get_local $0) + (get_global $~lib/internal/allocator/MAX_SIZE_32) + ) + (unreachable) + ) + (set_local $1 + (get_global $~lib/allocator/arena/offset) + ) + (set_local $2 + (i32.and + (i32.add + (i32.add + (get_local $1) + (get_local $0) + ) + (get_global $~lib/internal/allocator/AL_MASK) + ) + (i32.xor + (get_global $~lib/internal/allocator/AL_MASK) + (i32.const -1) + ) + ) + ) + (set_local $3 + (current_memory) + ) + (if + (i32.gt_u + (get_local $2) + (i32.shl + (get_local $3) + (i32.const 16) + ) + ) + (block + (set_local $4 + (i32.shr_u + (i32.and + (i32.add + (i32.sub + (get_local $2) + (get_local $1) + ) + (i32.const 65535) + ) + (i32.xor + (i32.const 65535) + (i32.const -1) + ) + ) + (i32.const 16) + ) + ) + (set_local $5 + (select + (tee_local $5 + (get_local $3) + ) + (tee_local $6 + (get_local $4) + ) + (i32.gt_s + (get_local $5) + (get_local $6) + ) + ) + ) + (if + (i32.lt_s + (grow_memory + (get_local $5) + ) + (i32.const 0) + ) + (if + (i32.lt_s + (grow_memory + (get_local $4) + ) + (i32.const 0) + ) + (unreachable) + ) + ) + ) + ) + (set_global $~lib/allocator/arena/offset + (get_local $2) + ) + (return + (get_local $1) + ) + ) + ) + (i32.const 0) + ) + (func $~lib/memory/memory.allocate (; 3 ;) (type $ii) (param $0 i32) (result i32) + (return + (call $~lib/allocator/arena/__memory_allocate + (get_local $0) + ) + ) + ) + (func $~lib/internal/string/allocate (; 4 ;) (type $ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (if + (i32.eqz + (if (result i32) + (tee_local $1 + (i32.gt_s + (get_local $0) + (i32.const 0) + ) + ) + (i32.le_s + (get_local $0) + (get_global $~lib/internal/string/MAX_LENGTH) + ) + (get_local $1) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 120) + (i32.const 25) + (i32.const 2) + ) + (unreachable) + ) + ) + (set_local $2 + (call $~lib/memory/memory.allocate + (i32.add + (get_global $~lib/internal/string/HEADER_SIZE) + (i32.shl + (get_local $0) + (i32.const 1) + ) + ) + ) + ) + (i32.store + (get_local $2) + (get_local $0) + ) + (get_local $2) + ) + (func $~lib/string/String.fromCharCode (; 5 ;) (type $ii) (param $0 i32) (result i32) + (local $1 i32) + (if + (i32.eqz (get_local $0) - (get_local $1) ) (return - (i32.const 0) + (i32.const 112) ) ) + (set_local $1 + (call $~lib/internal/string/allocate + (i32.const 1) + ) + ) + (i32.store16 offset=4 + (get_local $1) + (get_local $0) + ) + (get_local $1) + ) + (func $~lib/internal/string/compareUTF16 (; 6 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (set_local $3 + (i32.const 0) + ) (block $break|0 (loop $continue|0 (if (if (result i32) - (tee_local $3 - (i32.ne - (get_local $2) - (i32.const 0) + (get_local $2) + (i32.eqz + (tee_local $3 + (i32.sub + (i32.load16_u offset=4 + (get_local $0) + ) + (i32.load16_u offset=4 + (get_local $1) + ) + ) ) ) - (i32.eq - (i32.load8_u - (get_local $0) - ) - (i32.load8_u - (get_local $1) - ) - ) - (get_local $3) + (get_local $2) ) (block (block @@ -230,27 +410,154 @@ ) ) ) - (if (result i32) - (get_local $2) - (i32.sub - (i32.load8_u - (get_local $0) + (get_local $3) + ) + (func $~lib/string/String.__eq (; 7 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (if + (i32.eq + (get_local $0) + (get_local $1) + ) + (return + (i32.const 1) + ) + ) + (if + (if (result i32) + (tee_local $2 + (i32.eq + (get_local $0) + (i32.const 0) + ) ) - (i32.load8_u + (get_local $2) + (i32.eq + (get_local $1) + (i32.const 0) + ) + ) + (return + (i32.const 0) + ) + ) + (set_local $3 + (i32.load + (get_local $0) + ) + ) + (if + (i32.ne + (get_local $3) + (i32.load (get_local $1) ) ) - (i32.const 0) + (return + (i32.const 0) + ) + ) + (i32.eqz + (call $~lib/internal/string/compareUTF16 + (get_local $0) + (get_local $1) + (get_local $3) + ) ) ) - (func $~lib/memory/memory.compare (; 3 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (call $~lib/memory/memcmp - (get_local $0) - (get_local $1) - (get_local $2) + (func $~lib/string/String.fromCodePoint (; 8 ;) (type $ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (if + (i32.eqz + (i32.le_u + (get_local $0) + (i32.const 1114111) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 80) + (i32.const 31) + (i32.const 4) + ) + (unreachable) + ) ) + (if + (i32.eqz + (get_local $0) + ) + (return + (i32.const 112) + ) + ) + (set_local $1 + (i32.gt_s + (get_local $0) + (i32.const 65535) + ) + ) + (set_local $2 + (call $~lib/internal/string/allocate + (i32.add + (get_local $1) + (i32.const 1) + ) + ) + ) + (if + (i32.eqz + (get_local $1) + ) + (i32.store16 offset=4 + (get_local $2) + (get_local $0) + ) + (block + (set_local $0 + (i32.sub + (get_local $0) + (i32.const 65536) + ) + ) + (set_local $3 + (i32.add + (i32.shr_u + (get_local $0) + (i32.const 10) + ) + (i32.const 55296) + ) + ) + (set_local $4 + (i32.add + (i32.and + (get_local $0) + (i32.const 1023) + ) + (i32.const 56320) + ) + ) + (i32.store offset=4 + (get_local $2) + (i32.or + (i32.shl + (get_local $3) + (i32.const 16) + ) + (get_local $4) + ) + ) + ) + ) + (get_local $2) ) - (func $~lib/string/String#startsWith (; 4 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#startsWith (; 9 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -269,7 +576,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 80) - (i32.const 265) + (i32.const 291) (i32.const 4) ) (unreachable) @@ -281,7 +588,7 @@ (i32.const 0) ) (set_local $1 - (i32.const 120) + (i32.const 196) ) ) (set_local $3 @@ -340,29 +647,20 @@ ) ) (i32.eqz - (call $~lib/memory/memory.compare + (call $~lib/internal/string/compareUTF16 (i32.add - (i32.add - (get_local $0) - (get_global $~lib/internal/string/HEADER_SIZE) - ) + (get_local $0) (i32.shl (get_local $8) (i32.const 1) ) ) - (i32.add - (get_local $1) - (get_global $~lib/internal/string/HEADER_SIZE) - ) - (i32.shl - (get_local $9) - (i32.const 1) - ) + (get_local $1) + (get_local $9) ) ) ) - (func $~lib/string/String#endsWith (; 5 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#endsWith (; 10 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -381,7 +679,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 80) - (i32.const 109) + (i32.const 136) (i32.const 4) ) (unreachable) @@ -452,29 +750,20 @@ ) ) (i32.eqz - (call $~lib/memory/memory.compare + (call $~lib/internal/string/compareUTF16 (i32.add - (i32.add - (get_local $0) - (get_global $~lib/internal/string/HEADER_SIZE) - ) + (get_local $0) (i32.shl (get_local $9) (i32.const 1) ) ) - (i32.add - (get_local $1) - (get_global $~lib/internal/string/HEADER_SIZE) - ) - (i32.shl - (get_local $8) - (i32.const 1) - ) + (get_local $1) + (get_local $8) ) ) ) - (func $~lib/string/String#endsWith|trampoline (; 6 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#endsWith|trampoline (; 11 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (block $1of1 (block $0of1 (block $outOfRange @@ -497,7 +786,7 @@ (get_local $2) ) ) - (func $~lib/string/String#indexOf (; 7 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#indexOf (; 12 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -515,7 +804,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 80) - (i32.const 221) + (i32.const 248) (i32.const 4) ) (unreachable) @@ -527,7 +816,7 @@ (i32.const 0) ) (set_local $1 - (i32.const 120) + (i32.const 196) ) ) (set_local $3 @@ -607,25 +896,16 @@ ) (if (i32.eqz - (call $~lib/memory/memory.compare + (call $~lib/internal/string/compareUTF16 (i32.add - (i32.add - (get_local $0) - (get_global $~lib/internal/string/HEADER_SIZE) - ) + (get_local $0) (i32.shl (get_local $5) (i32.const 1) ) ) - (i32.add - (get_local $1) - (get_global $~lib/internal/string/HEADER_SIZE) - ) - (i32.shl - (get_local $3) - (i32.const 1) - ) + (get_local $1) + (get_local $3) ) ) (return @@ -643,7 +923,7 @@ ) (i32.const -1) ) - (func $~lib/string/String#includes (; 8 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#includes (; 13 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (i32.ne (call $~lib/string/String#indexOf (get_local $0) @@ -653,7 +933,7 @@ (i32.const -1) ) ) - (func $~lib/string/String#lastIndexOf (; 9 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#lastIndexOf (; 14 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -672,7 +952,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 80) - (i32.const 243) + (i32.const 269) (i32.const 4) ) (unreachable) @@ -684,7 +964,7 @@ (i32.const 0) ) (set_local $1 - (i32.const 120) + (i32.const 196) ) ) (set_local $3 @@ -764,25 +1044,16 @@ ) (if (i32.eqz - (call $~lib/memory/memory.compare + (call $~lib/internal/string/compareUTF16 (i32.add - (i32.add - (get_local $0) - (get_global $~lib/internal/string/HEADER_SIZE) - ) + (get_local $0) (i32.shl (get_local $6) (i32.const 1) ) ) - (i32.add - (get_local $1) - (get_global $~lib/internal/string/HEADER_SIZE) - ) - (i32.shl - (get_local $4) - (i32.const 1) - ) + (get_local $1) + (get_local $4) ) ) (return @@ -800,7 +1071,7 @@ ) (i32.const -1) ) - (func $~lib/string/String#lastIndexOf|trampoline (; 10 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#lastIndexOf|trampoline (; 15 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (block $1of1 (block $0of1 (block $outOfRange @@ -823,10 +1094,10 @@ (get_local $2) ) ) - (func $std/string/getString (; 11 ;) (type $i) (result i32) + (func $std/string/getString (; 16 ;) (type $i) (result i32) (get_global $std/string/str) ) - (func $~lib/internal/string/parse (; 12 ;) (type $iiF) (param $0 i32) (param $1 i32) (result f64) + (func $~lib/internal/string/parse (; 17 ;) (type $iiF) (param $0 i32) (param $1 i32) (result f64) (local $2 i32) (local $3 i32) (local $4 i32) @@ -1216,13 +1487,13 @@ (get_local $7) ) ) - (func $~lib/string/parseInt (; 13 ;) (type $iiF) (param $0 i32) (param $1 i32) (result f64) + (func $~lib/string/parseInt (; 18 ;) (type $iiF) (param $0 i32) (param $1 i32) (result f64) (call $~lib/internal/string/parse (get_local $0) (get_local $1) ) ) - (func $~lib/string/parseFloat (; 14 ;) (type $iF) (param $0 i32) (result f64) + (func $~lib/string/parseFloat (; 19 ;) (type $iF) (param $0 i32) (result f64) (local $1 i32) (local $2 i32) (local $3 i32) @@ -1406,7 +1677,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 80) - (i32.const 563) + (i32.const 588) (i32.const 10) ) (unreachable) @@ -1499,168 +1770,7 @@ (get_local $5) ) ) - (func $~lib/allocator/arena/__memory_allocate (; 15 ;) (type $ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (if - (get_local $0) - (block - (if - (i32.gt_u - (get_local $0) - (get_global $~lib/internal/allocator/MAX_SIZE_32) - ) - (unreachable) - ) - (set_local $1 - (get_global $~lib/allocator/arena/offset) - ) - (set_local $2 - (i32.and - (i32.add - (i32.add - (get_local $1) - (get_local $0) - ) - (get_global $~lib/internal/allocator/AL_MASK) - ) - (i32.xor - (get_global $~lib/internal/allocator/AL_MASK) - (i32.const -1) - ) - ) - ) - (set_local $3 - (current_memory) - ) - (if - (i32.gt_u - (get_local $2) - (i32.shl - (get_local $3) - (i32.const 16) - ) - ) - (block - (set_local $4 - (i32.shr_u - (i32.and - (i32.add - (i32.sub - (get_local $2) - (get_local $1) - ) - (i32.const 65535) - ) - (i32.xor - (i32.const 65535) - (i32.const -1) - ) - ) - (i32.const 16) - ) - ) - (set_local $5 - (select - (tee_local $5 - (get_local $3) - ) - (tee_local $6 - (get_local $4) - ) - (i32.gt_s - (get_local $5) - (get_local $6) - ) - ) - ) - (if - (i32.lt_s - (grow_memory - (get_local $5) - ) - (i32.const 0) - ) - (if - (i32.lt_s - (grow_memory - (get_local $4) - ) - (i32.const 0) - ) - (unreachable) - ) - ) - ) - ) - (set_global $~lib/allocator/arena/offset - (get_local $2) - ) - (return - (get_local $1) - ) - ) - ) - (i32.const 0) - ) - (func $~lib/memory/memory.allocate (; 16 ;) (type $ii) (param $0 i32) (result i32) - (return - (call $~lib/allocator/arena/__memory_allocate - (get_local $0) - ) - ) - ) - (func $~lib/internal/string/allocate (; 17 ;) (type $ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (if - (i32.eqz - (if (result i32) - (tee_local $1 - (i32.gt_s - (get_local $0) - (i32.const 0) - ) - ) - (i32.le_s - (get_local $0) - (get_global $~lib/internal/string/MAX_LENGTH) - ) - (get_local $1) - ) - ) - (block - (call $~lib/env/abort - (i32.const 0) - (i32.const 368) - (i32.const 25) - (i32.const 2) - ) - (unreachable) - ) - ) - (set_local $2 - (call $~lib/memory/memory.allocate - (i32.add - (get_global $~lib/internal/string/HEADER_SIZE) - (i32.shl - (get_local $0) - (i32.const 1) - ) - ) - ) - ) - (i32.store - (get_local $2) - (get_local $0) - ) - (get_local $2) - ) - (func $~lib/memory/memcpy (; 18 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/memory/memcpy (; 20 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -3462,7 +3572,7 @@ ) ) ) - (func $~lib/memory/memmove (; 19 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/memory/memmove (; 21 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (if (i32.eq @@ -3780,14 +3890,14 @@ ) ) ) - (func $~lib/memory/memory.copy (; 20 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/memory/memory.copy (; 22 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32) (call $~lib/memory/memmove (get_local $0) (get_local $1) (get_local $2) ) ) - (func $~lib/string/String#concat (; 21 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#concat (; 23 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3803,7 +3913,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 80) - (i32.const 85) + (i32.const 112) (i32.const 4) ) (unreachable) @@ -3815,7 +3925,7 @@ (i32.const 0) ) (set_local $1 - (i32.const 120) + (i32.const 196) ) ) (set_local $2 @@ -3884,13 +3994,13 @@ ) (get_local $5) ) - (func $~lib/string/String.__concat (; 22 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__concat (; 24 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) (if (i32.eqz (get_local $0) ) (set_local $0 - (i32.const 120) + (i32.const 196) ) ) (call $~lib/string/String#concat @@ -3898,70 +4008,7 @@ (get_local $1) ) ) - (func $~lib/string/String.__eq (; 23 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (if - (i32.eq - (get_local $0) - (get_local $1) - ) - (return - (i32.const 1) - ) - ) - (if - (if (result i32) - (tee_local $2 - (i32.eq - (get_local $0) - (i32.const 0) - ) - ) - (get_local $2) - (i32.eq - (get_local $1) - (i32.const 0) - ) - ) - (return - (i32.const 0) - ) - ) - (set_local $3 - (i32.load - (get_local $0) - ) - ) - (if - (i32.ne - (get_local $3) - (i32.load - (get_local $1) - ) - ) - (return - (i32.const 0) - ) - ) - (i32.eqz - (call $~lib/memory/memory.compare - (i32.add - (get_local $0) - (get_global $~lib/internal/string/HEADER_SIZE) - ) - (i32.add - (get_local $1) - (get_global $~lib/internal/string/HEADER_SIZE) - ) - (i32.shl - (get_local $3) - (i32.const 1) - ) - ) - ) - ) - (func $~lib/string/String.__ne (; 24 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__ne (; 25 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) (i32.eqz (call $~lib/string/String.__eq (get_local $0) @@ -3969,7 +4016,7 @@ ) ) ) - (func $~lib/string/String.__gt (; 25 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__gt (; 26 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -4043,24 +4090,15 @@ ) ) (i32.gt_s - (call $~lib/memory/memory.compare - (i32.add - (get_local $0) - (get_global $~lib/internal/string/HEADER_SIZE) - ) - (i32.add - (get_local $1) - (get_global $~lib/internal/string/HEADER_SIZE) - ) - (i32.shl - (get_local $6) - (i32.const 1) - ) + (call $~lib/internal/string/compareUTF16 + (get_local $0) + (get_local $1) + (get_local $6) ) (i32.const 0) ) ) - (func $~lib/string/String.__gte (; 26 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__gte (; 27 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -4136,24 +4174,15 @@ ) ) (i32.ge_s - (call $~lib/memory/memory.compare - (i32.add - (get_local $0) - (get_global $~lib/internal/string/HEADER_SIZE) - ) - (i32.add - (get_local $1) - (get_global $~lib/internal/string/HEADER_SIZE) - ) - (i32.shl - (get_local $6) - (i32.const 1) - ) + (call $~lib/internal/string/compareUTF16 + (get_local $0) + (get_local $1) + (get_local $6) ) (i32.const 0) ) ) - (func $~lib/string/String.__lt (; 27 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__lt (; 28 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -4227,24 +4256,15 @@ ) ) (i32.lt_s - (call $~lib/memory/memory.compare - (i32.add - (get_local $0) - (get_global $~lib/internal/string/HEADER_SIZE) - ) - (i32.add - (get_local $1) - (get_global $~lib/internal/string/HEADER_SIZE) - ) - (i32.shl - (get_local $6) - (i32.const 1) - ) + (call $~lib/internal/string/compareUTF16 + (get_local $0) + (get_local $1) + (get_local $6) ) (i32.const 0) ) ) - (func $~lib/string/String.__lte (; 28 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__lte (; 29 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -4320,24 +4340,15 @@ ) ) (i32.le_s - (call $~lib/memory/memory.compare - (i32.add - (get_local $0) - (get_global $~lib/internal/string/HEADER_SIZE) - ) - (i32.add - (get_local $1) - (get_global $~lib/internal/string/HEADER_SIZE) - ) - (i32.shl - (get_local $6) - (i32.const 1) - ) + (call $~lib/internal/string/compareUTF16 + (get_local $0) + (get_local $1) + (get_local $6) ) (i32.const 0) ) ) - (func $~lib/string/String#repeat (; 29 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#repeat (; 30 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -4354,7 +4365,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 80) - (i32.const 417) + (i32.const 442) (i32.const 4) ) (unreachable) @@ -4389,7 +4400,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 80) - (i32.const 422) + (i32.const 447) (i32.const 6) ) (unreachable) @@ -4481,7 +4492,7 @@ ) (get_local $4) ) - (func $~lib/internal/itoa/decimalCountU32 (; 30 ;) (type $ii) (param $0 i32) (result i32) + (func $~lib/internal/itoa/decimalCountU32 (; 31 ;) (type $ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -4506,7 +4517,7 @@ (set_local $3 (i32.load (block $~lib/internal/itoa/POWERS10|inlined.0 (result i32) - (i32.const 552) + (i32.const 576) ) ) ) @@ -4537,7 +4548,7 @@ (i32.const 1) ) ) - (func $~lib/internal/itoa/utoa32_lut (; 31 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/internal/itoa/utoa32_lut (; 32 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -4548,7 +4559,7 @@ (set_local $3 (i32.load (block $~lib/internal/itoa/DIGITS|inlined.0 (result i32) - (i32.const 624) + (i32.const 648) ) ) ) @@ -4756,7 +4767,7 @@ ) ) ) - (func $~lib/internal/itoa/itoa32 (; 32 ;) (type $ii) (param $0 i32) (result i32) + (func $~lib/internal/itoa/itoa32 (; 33 ;) (type $ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -4765,7 +4776,7 @@ (get_local $0) ) (return - (i32.const 204) + (i32.const 280) ) ) (set_local $1 @@ -4812,7 +4823,7 @@ ) (get_local $3) ) - (func $~lib/internal/itoa/utoa32 (; 33 ;) (type $ii) (param $0 i32) (result i32) + (func $~lib/internal/itoa/utoa32 (; 34 ;) (type $ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (if @@ -4820,7 +4831,7 @@ (get_local $0) ) (return - (i32.const 204) + (i32.const 280) ) ) (set_local $1 @@ -4842,7 +4853,7 @@ ) (get_local $2) ) - (func $~lib/internal/itoa/decimalCountU64 (; 34 ;) (type $Ii) (param $0 i64) (result i32) + (func $~lib/internal/itoa/decimalCountU64 (; 35 ;) (type $Ii) (param $0 i64) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -4870,7 +4881,7 @@ (set_local $3 (i32.load (block $~lib/internal/itoa/POWERS10|inlined.1 (result i32) - (i32.const 1400) + (i32.const 1424) ) ) ) @@ -4910,7 +4921,7 @@ (i32.const 1) ) ) - (func $~lib/internal/itoa/utoa64_lut (; 35 ;) (type $iIiv) (param $0 i32) (param $1 i64) (param $2 i32) + (func $~lib/internal/itoa/utoa64_lut (; 36 ;) (type $iIiv) (param $0 i32) (param $1 i64) (param $2 i32) (local $3 i32) (local $4 i64) (local $5 i32) @@ -4925,7 +4936,7 @@ (set_local $3 (i32.load (block $~lib/internal/itoa/DIGITS|inlined.1 (result i32) - (i32.const 1472) + (i32.const 1496) ) ) ) @@ -5104,7 +5115,7 @@ (get_local $2) ) ) - (func $~lib/internal/itoa/utoa64 (; 36 ;) (type $Ii) (param $0 i64) (result i32) + (func $~lib/internal/itoa/utoa64 (; 37 ;) (type $Ii) (param $0 i64) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -5113,7 +5124,7 @@ (get_local $0) ) (return - (i32.const 204) + (i32.const 280) ) ) (if @@ -5169,7 +5180,7 @@ ) (get_local $1) ) - (func $~lib/internal/itoa/itoa64 (; 37 ;) (type $Ii) (param $0 i64) (result i32) + (func $~lib/internal/itoa/itoa64 (; 38 ;) (type $Ii) (param $0 i64) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -5179,7 +5190,7 @@ (get_local $0) ) (return - (i32.const 204) + (i32.const 280) ) ) (set_local $1 @@ -5263,7 +5274,7 @@ ) (get_local $2) ) - (func $start (; 38 ;) (type $v) + (func $start (; 39 ;) (type $v) (set_global $~lib/allocator/arena/startOffset (i32.and (i32.add @@ -5337,33 +5348,11 @@ ) (if (i32.eqz - (call $~lib/string/String#startsWith - (get_global $std/string/str) - (i32.const 112) - (i32.const 0) - ) - ) - (block - (call $~lib/env/abort - (i32.const 0) - (i32.const 48) - (i32.const 15) - (i32.const 0) - ) - (unreachable) - ) - ) - (if - (i32.eqz - (block (result i32) - (set_global $~argc - (i32.const 1) - ) - (call $~lib/string/String#endsWith|trampoline - (get_global $std/string/str) - (i32.const 132) + (call $~lib/string/String.__eq + (call $~lib/string/String.fromCharCode (i32.const 0) ) + (i32.const 112) ) ) (block @@ -5378,10 +5367,11 @@ ) (if (i32.eqz - (call $~lib/string/String#includes - (get_global $std/string/str) - (i32.const 148) - (i32.const 0) + (call $~lib/string/String.__eq + (call $~lib/string/String.fromCharCode + (i32.const 54) + ) + (i32.const 172) ) ) (block @@ -5396,20 +5386,21 @@ ) (if (i32.eqz - (i32.eq - (call $~lib/string/String#indexOf - (i32.const 8) - (i32.const 8) - (i32.const 0) + (call $~lib/string/String.__eq + (call $~lib/string/String.fromCharCode + (i32.add + (i32.const 65536) + (i32.const 54) + ) ) - (i32.const 0) + (i32.const 172) ) ) (block (call $~lib/env/abort (i32.const 0) (i32.const 48) - (i32.const 19) + (i32.const 18) (i32.const 0) ) (unreachable) @@ -5417,13 +5408,11 @@ ) (if (i32.eqz - (i32.eq - (call $~lib/string/String#indexOf - (i32.const 8) - (i32.const 112) + (call $~lib/string/String.__eq + (call $~lib/string/String.fromCodePoint (i32.const 0) ) - (i32.const -1) + (i32.const 112) ) ) (block @@ -5438,13 +5427,11 @@ ) (if (i32.eqz - (i32.eq - (call $~lib/string/String#indexOf - (get_global $std/string/str) - (i32.const 8) - (i32.const 0) + (call $~lib/string/String.__eq + (call $~lib/string/String.fromCodePoint + (i32.const 54) ) - (i32.const 0) + (i32.const 172) ) ) (block @@ -5459,18 +5446,13 @@ ) (if (i32.eqz - (i32.eq - (call $~lib/string/String#indexOf - (get_global $std/string/str) - (i32.const 160) - (i32.const 0) - ) - (i32.const 2) + (call $~lib/string/String.fromCodePoint + (i32.const 119558) ) ) (block (call $~lib/env/abort - (i32.const 0) + (i32.const 180) (i32.const 48) (i32.const 22) (i32.const 0) @@ -5480,34 +5462,10 @@ ) (if (i32.eqz - (i32.eq - (call $~lib/string/String#indexOf - (get_global $std/string/str) - (i32.const 168) - (i32.const 0) - ) - (i32.const -1) - ) - ) - (block - (call $~lib/env/abort + (call $~lib/string/String#startsWith + (get_global $std/string/str) + (i32.const 188) (i32.const 0) - (i32.const 48) - (i32.const 23) - (i32.const 0) - ) - (unreachable) - ) - ) - (if - (i32.eqz - (i32.eq - (call $~lib/string/String#indexOf - (get_global $std/string/str) - (i32.const 160) - (i32.const 2) - ) - (i32.const 2) ) ) (block @@ -5522,13 +5480,15 @@ ) (if (i32.eqz - (i32.eq - (call $~lib/string/String#indexOf - (get_global $std/string/str) - (i32.const 160) - (i32.const 3) + (block (result i32) + (set_global $~argc + (i32.const 1) + ) + (call $~lib/string/String#endsWith|trampoline + (get_global $std/string/str) + (i32.const 208) + (i32.const 0) ) - (i32.const -1) ) ) (block @@ -5543,13 +5503,10 @@ ) (if (i32.eqz - (i32.eq - (call $~lib/string/String#indexOf - (get_global $std/string/str) - (i32.const 176) - (i32.const -1) - ) - (i32.const 2) + (call $~lib/string/String#includes + (get_global $std/string/str) + (i32.const 224) + (i32.const 0) ) ) (block @@ -5565,15 +5522,10 @@ (if (i32.eqz (i32.eq - (block (result i32) - (set_global $~argc - (i32.const 1) - ) - (call $~lib/string/String#lastIndexOf|trampoline - (i32.const 8) - (i32.const 8) - (i32.const 0) - ) + (call $~lib/string/String#indexOf + (i32.const 8) + (i32.const 8) + (i32.const 0) ) (i32.const 0) ) @@ -5591,15 +5543,10 @@ (if (i32.eqz (i32.eq - (block (result i32) - (set_global $~argc - (i32.const 1) - ) - (call $~lib/string/String#lastIndexOf|trampoline - (i32.const 8) - (i32.const 112) - (i32.const 0) - ) + (call $~lib/string/String#indexOf + (i32.const 8) + (i32.const 188) + (i32.const 0) ) (i32.const -1) ) @@ -5614,6 +5561,184 @@ (unreachable) ) ) + (if + (i32.eqz + (i32.eq + (call $~lib/string/String#indexOf + (get_global $std/string/str) + (i32.const 8) + (i32.const 0) + ) + (i32.const 0) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 48) + (i32.const 30) + (i32.const 0) + ) + (unreachable) + ) + ) + (if + (i32.eqz + (i32.eq + (call $~lib/string/String#indexOf + (get_global $std/string/str) + (i32.const 236) + (i32.const 0) + ) + (i32.const 2) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 48) + (i32.const 31) + (i32.const 0) + ) + (unreachable) + ) + ) + (if + (i32.eqz + (i32.eq + (call $~lib/string/String#indexOf + (get_global $std/string/str) + (i32.const 244) + (i32.const 0) + ) + (i32.const -1) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 48) + (i32.const 32) + (i32.const 0) + ) + (unreachable) + ) + ) + (if + (i32.eqz + (i32.eq + (call $~lib/string/String#indexOf + (get_global $std/string/str) + (i32.const 236) + (i32.const 2) + ) + (i32.const 2) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 48) + (i32.const 33) + (i32.const 0) + ) + (unreachable) + ) + ) + (if + (i32.eqz + (i32.eq + (call $~lib/string/String#indexOf + (get_global $std/string/str) + (i32.const 236) + (i32.const 3) + ) + (i32.const -1) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 48) + (i32.const 34) + (i32.const 0) + ) + (unreachable) + ) + ) + (if + (i32.eqz + (i32.eq + (call $~lib/string/String#indexOf + (get_global $std/string/str) + (i32.const 252) + (i32.const -1) + ) + (i32.const 2) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 48) + (i32.const 35) + (i32.const 0) + ) + (unreachable) + ) + ) + (if + (i32.eqz + (i32.eq + (block (result i32) + (set_global $~argc + (i32.const 1) + ) + (call $~lib/string/String#lastIndexOf|trampoline + (i32.const 8) + (i32.const 8) + (i32.const 0) + ) + ) + (i32.const 0) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 48) + (i32.const 37) + (i32.const 0) + ) + (unreachable) + ) + ) + (if + (i32.eqz + (i32.eq + (block (result i32) + (set_global $~argc + (i32.const 1) + ) + (call $~lib/string/String#lastIndexOf|trampoline + (i32.const 8) + (i32.const 188) + (i32.const 0) + ) + ) + (i32.const -1) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 48) + (i32.const 38) + (i32.const 0) + ) + (unreachable) + ) + ) (if (i32.eqz (i32.eq @@ -5636,7 +5761,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 48) - (i32.const 30) + (i32.const 39) (i32.const 0) ) (unreachable) @@ -5651,7 +5776,7 @@ ) (call $~lib/string/String#lastIndexOf|trampoline (get_global $std/string/str) - (i32.const 160) + (i32.const 236) (i32.const 0) ) ) @@ -5662,7 +5787,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 48) - (i32.const 31) + (i32.const 40) (i32.const 0) ) (unreachable) @@ -5677,7 +5802,7 @@ ) (call $~lib/string/String#lastIndexOf|trampoline (get_global $std/string/str) - (i32.const 168) + (i32.const 244) (i32.const 0) ) ) @@ -5688,7 +5813,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 48) - (i32.const 32) + (i32.const 41) (i32.const 0) ) (unreachable) @@ -5703,7 +5828,7 @@ ) (call $~lib/string/String#lastIndexOf|trampoline (get_global $std/string/str) - (i32.const 188) + (i32.const 264) (i32.const 0) ) ) @@ -5714,7 +5839,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 48) - (i32.const 33) + (i32.const 42) (i32.const 0) ) (unreachable) @@ -5725,7 +5850,7 @@ (i32.eq (call $~lib/string/String#lastIndexOf (get_global $std/string/str) - (i32.const 160) + (i32.const 236) (i32.const 2) ) (i32.const 2) @@ -5735,7 +5860,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 48) - (i32.const 34) + (i32.const 43) (i32.const 0) ) (unreachable) @@ -5746,95 +5871,12 @@ (i32.eq (call $~lib/string/String#lastIndexOf (get_global $std/string/str) - (i32.const 160) + (i32.const 236) (i32.const 3) ) (i32.const 2) ) ) - (block - (call $~lib/env/abort - (i32.const 0) - (i32.const 48) - (i32.const 35) - (i32.const 0) - ) - (unreachable) - ) - ) - (if - (i32.eqz - (i32.eq - (call $~lib/string/String#lastIndexOf - (get_global $std/string/str) - (i32.const 176) - (i32.const -1) - ) - (i32.const -1) - ) - ) - (block - (call $~lib/env/abort - (i32.const 0) - (i32.const 48) - (i32.const 36) - (i32.const 0) - ) - (unreachable) - ) - ) - (if - (i32.eqz - (i32.eq - (call $~lib/string/String#lastIndexOf - (get_global $std/string/str) - (i32.const 196) - (i32.const 0) - ) - (i32.const -1) - ) - ) - (block - (call $~lib/env/abort - (i32.const 0) - (i32.const 48) - (i32.const 37) - (i32.const 0) - ) - (unreachable) - ) - ) - (if - (i32.eqz - (i32.eq - (call $~lib/string/String#lastIndexOf - (get_global $std/string/str) - (i32.const 112) - (i32.const 0) - ) - (i32.const 0) - ) - ) - (block - (call $~lib/env/abort - (i32.const 0) - (i32.const 48) - (i32.const 38) - (i32.const 0) - ) - (unreachable) - ) - ) - (if - (i32.eqz - (f64.eq - (call $~lib/string/parseInt - (i32.const 204) - (i32.const 0) - ) - (f64.const 0) - ) - ) (block (call $~lib/env/abort (i32.const 0) @@ -5847,12 +5889,13 @@ ) (if (i32.eqz - (f64.eq - (call $~lib/string/parseInt - (i32.const 212) - (i32.const 0) + (i32.eq + (call $~lib/string/String#lastIndexOf + (get_global $std/string/str) + (i32.const 252) + (i32.const -1) ) - (f64.const 1) + (i32.const -1) ) ) (block @@ -5867,12 +5910,13 @@ ) (if (i32.eqz - (f64.eq - (call $~lib/string/parseInt - (i32.const 220) + (i32.eq + (call $~lib/string/String#lastIndexOf + (get_global $std/string/str) + (i32.const 272) (i32.const 0) ) - (f64.const 5) + (i32.const -1) ) ) (block @@ -5887,12 +5931,13 @@ ) (if (i32.eqz - (f64.eq - (call $~lib/string/parseInt - (i32.const 236) + (i32.eq + (call $~lib/string/String#lastIndexOf + (get_global $std/string/str) + (i32.const 188) (i32.const 0) ) - (f64.const 455) + (i32.const 0) ) ) (block @@ -5909,88 +5954,9 @@ (i32.eqz (f64.eq (call $~lib/string/parseInt - (i32.const 252) + (i32.const 280) (i32.const 0) ) - (f64.const 3855) - ) - ) - (block - (call $~lib/env/abort - (i32.const 0) - (i32.const 48) - (i32.const 48) - (i32.const 0) - ) - (unreachable) - ) - ) - (if - (i32.eqz - (f64.eq - (call $~lib/string/parseInt - (i32.const 268) - (i32.const 0) - ) - (f64.const 3855) - ) - ) - (block - (call $~lib/env/abort - (i32.const 0) - (i32.const 48) - (i32.const 49) - (i32.const 0) - ) - (unreachable) - ) - ) - (if - (i32.eqz - (f64.eq - (call $~lib/string/parseInt - (i32.const 284) - (i32.const 0) - ) - (f64.const 11) - ) - ) - (block - (call $~lib/env/abort - (i32.const 0) - (i32.const 48) - (i32.const 50) - (i32.const 0) - ) - (unreachable) - ) - ) - (if - (i32.eqz - (f64.eq - (call $~lib/string/parseInt - (i32.const 296) - (i32.const 0) - ) - (f64.const 1) - ) - ) - (block - (call $~lib/env/abort - (i32.const 0) - (i32.const 48) - (i32.const 51) - (i32.const 0) - ) - (unreachable) - ) - ) - (if - (i32.eqz - (f64.eq - (call $~lib/string/parseFloat - (i32.const 204) - ) (f64.const 0) ) ) @@ -6007,8 +5973,9 @@ (if (i32.eqz (f64.eq - (call $~lib/string/parseFloat - (i32.const 212) + (call $~lib/string/parseInt + (i32.const 288) + (i32.const 0) ) (f64.const 1) ) @@ -6026,10 +5993,11 @@ (if (i32.eqz (f64.eq - (call $~lib/string/parseFloat - (i32.const 308) + (call $~lib/string/parseInt + (i32.const 296) + (i32.const 0) ) - (f64.const 0.1) + (f64.const 5) ) ) (block @@ -6045,10 +6013,11 @@ (if (i32.eqz (f64.eq - (call $~lib/string/parseFloat - (i32.const 320) + (call $~lib/string/parseInt + (i32.const 312) + (i32.const 0) ) - (f64.const 0.25) + (f64.const 455) ) ) (block @@ -6064,10 +6033,11 @@ (if (i32.eqz (f64.eq - (call $~lib/string/parseFloat - (i32.const 332) + (call $~lib/string/parseInt + (i32.const 328) + (i32.const 0) ) - (f64.const 0.1) + (f64.const 3855) ) ) (block @@ -6080,17 +6050,54 @@ (unreachable) ) ) - (set_global $std/string/c - (call $~lib/string/String.__concat - (i32.const 352) - (i32.const 360) + (if + (i32.eqz + (f64.eq + (call $~lib/string/parseInt + (i32.const 344) + (i32.const 0) + ) + (f64.const 3855) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 48) + (i32.const 58) + (i32.const 0) + ) + (unreachable) ) ) (if (i32.eqz - (call $~lib/string/String.__eq - (get_global $std/string/c) - (i32.const 420) + (f64.eq + (call $~lib/string/parseInt + (i32.const 360) + (i32.const 0) + ) + (f64.const 11) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 48) + (i32.const 59) + (i32.const 0) + ) + (unreachable) + ) + ) + (if + (i32.eqz + (f64.eq + (call $~lib/string/parseInt + (i32.const 372) + (i32.const 0) + ) + (f64.const 1) ) ) (block @@ -6105,16 +6112,134 @@ ) (if (i32.eqz - (call $~lib/string/String.__ne - (get_global $std/string/c) - (i32.const 352) + (f64.eq + (call $~lib/string/parseFloat + (i32.const 280) + ) + (f64.const 0) ) ) (block (call $~lib/env/abort (i32.const 0) (i32.const 48) - (i32.const 61) + (i32.const 62) + (i32.const 0) + ) + (unreachable) + ) + ) + (if + (i32.eqz + (f64.eq + (call $~lib/string/parseFloat + (i32.const 288) + ) + (f64.const 1) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 48) + (i32.const 63) + (i32.const 0) + ) + (unreachable) + ) + ) + (if + (i32.eqz + (f64.eq + (call $~lib/string/parseFloat + (i32.const 384) + ) + (f64.const 0.1) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 48) + (i32.const 64) + (i32.const 0) + ) + (unreachable) + ) + ) + (if + (i32.eqz + (f64.eq + (call $~lib/string/parseFloat + (i32.const 396) + ) + (f64.const 0.25) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 48) + (i32.const 65) + (i32.const 0) + ) + (unreachable) + ) + ) + (if + (i32.eqz + (f64.eq + (call $~lib/string/parseFloat + (i32.const 408) + ) + (f64.const 0.1) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 48) + (i32.const 66) + (i32.const 0) + ) + (unreachable) + ) + ) + (set_global $std/string/c + (call $~lib/string/String.__concat + (i32.const 428) + (i32.const 436) + ) + ) + (if + (i32.eqz + (call $~lib/string/String.__eq + (get_global $std/string/c) + (i32.const 444) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 48) + (i32.const 69) + (i32.const 0) + ) + (unreachable) + ) + ) + (if + (i32.eqz + (call $~lib/string/String.__ne + (get_global $std/string/c) + (i32.const 428) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 48) + (i32.const 70) (i32.const 0) ) (unreachable) @@ -6131,7 +6256,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 48) - (i32.const 62) + (i32.const 71) (i32.const 0) ) (unreachable) @@ -6144,131 +6269,6 @@ (get_global $std/string/nullStr) ) ) - (block - (call $~lib/env/abort - (i32.const 0) - (i32.const 48) - (i32.const 63) - (i32.const 0) - ) - (unreachable) - ) - ) - (if - (i32.eqz - (call $~lib/string/String.__gt - (i32.const 360) - (i32.const 352) - ) - ) - (block - (call $~lib/env/abort - (i32.const 0) - (i32.const 48) - (i32.const 65) - (i32.const 0) - ) - (unreachable) - ) - ) - (if - (i32.eqz - (call $~lib/string/String.__gt - (i32.const 428) - (i32.const 352) - ) - ) - (block - (call $~lib/env/abort - (i32.const 0) - (i32.const 48) - (i32.const 66) - (i32.const 0) - ) - (unreachable) - ) - ) - (if - (i32.eqz - (call $~lib/string/String.__gte - (i32.const 428) - (i32.const 436) - ) - ) - (block - (call $~lib/env/abort - (i32.const 0) - (i32.const 48) - (i32.const 67) - (i32.const 0) - ) - (unreachable) - ) - ) - (if - (i32.eqz - (call $~lib/string/String.__gt - (i32.const 428) - (i32.const 420) - ) - ) - (block - (call $~lib/env/abort - (i32.const 0) - (i32.const 48) - (i32.const 68) - (i32.const 0) - ) - (unreachable) - ) - ) - (if - (i32.eqz - (i32.eqz - (call $~lib/string/String.__lt - (i32.const 428) - (i32.const 420) - ) - ) - ) - (block - (call $~lib/env/abort - (i32.const 0) - (i32.const 48) - (i32.const 69) - (i32.const 0) - ) - (unreachable) - ) - ) - (if - (i32.eqz - (i32.eqz - (call $~lib/string/String.__lt - (i32.const 360) - (get_global $std/string/nullStr) - ) - ) - ) - (block - (call $~lib/env/abort - (i32.const 0) - (i32.const 48) - (i32.const 71) - (i32.const 0) - ) - (unreachable) - ) - ) - (if - (i32.eqz - (i32.eqz - (call $~lib/string/String.__lt - (get_global $std/string/nullStr) - (i32.const 360) - ) - ) - ) (block (call $~lib/env/abort (i32.const 0) @@ -6282,8 +6282,8 @@ (if (i32.eqz (call $~lib/string/String.__gt - (i32.const 444) - (i32.const 8) + (i32.const 436) + (i32.const 428) ) ) (block @@ -6298,9 +6298,9 @@ ) (if (i32.eqz - (call $~lib/string/String.__lt - (i32.const 8) - (i32.const 444) + (call $~lib/string/String.__gt + (i32.const 452) + (i32.const 428) ) ) (block @@ -6316,8 +6316,8 @@ (if (i32.eqz (call $~lib/string/String.__gte - (i32.const 444) - (i32.const 8) + (i32.const 452) + (i32.const 460) ) ) (block @@ -6332,8 +6332,8 @@ ) (if (i32.eqz - (call $~lib/string/String.__lte - (i32.const 8) + (call $~lib/string/String.__gt + (i32.const 452) (i32.const 444) ) ) @@ -6351,8 +6351,8 @@ (i32.eqz (i32.eqz (call $~lib/string/String.__lt + (i32.const 452) (i32.const 444) - (i32.const 8) ) ) ) @@ -6369,9 +6369,9 @@ (if (i32.eqz (i32.eqz - (call $~lib/string/String.__gt - (i32.const 8) - (i32.const 444) + (call $~lib/string/String.__lt + (i32.const 436) + (get_global $std/string/nullStr) ) ) ) @@ -6379,7 +6379,132 @@ (call $~lib/env/abort (i32.const 0) (i32.const 48) - (i32.const 79) + (i32.const 80) + (i32.const 0) + ) + (unreachable) + ) + ) + (if + (i32.eqz + (i32.eqz + (call $~lib/string/String.__lt + (get_global $std/string/nullStr) + (i32.const 436) + ) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 48) + (i32.const 81) + (i32.const 0) + ) + (unreachable) + ) + ) + (if + (i32.eqz + (call $~lib/string/String.__gt + (i32.const 468) + (i32.const 8) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 48) + (i32.const 83) + (i32.const 0) + ) + (unreachable) + ) + ) + (if + (i32.eqz + (call $~lib/string/String.__lt + (i32.const 8) + (i32.const 468) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 48) + (i32.const 84) + (i32.const 0) + ) + (unreachable) + ) + ) + (if + (i32.eqz + (call $~lib/string/String.__gte + (i32.const 468) + (i32.const 8) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 48) + (i32.const 85) + (i32.const 0) + ) + (unreachable) + ) + ) + (if + (i32.eqz + (call $~lib/string/String.__lte + (i32.const 8) + (i32.const 468) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 48) + (i32.const 86) + (i32.const 0) + ) + (unreachable) + ) + ) + (if + (i32.eqz + (i32.eqz + (call $~lib/string/String.__lt + (i32.const 468) + (i32.const 8) + ) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 48) + (i32.const 87) + (i32.const 0) + ) + (unreachable) + ) + ) + (if + (i32.eqz + (i32.eqz + (call $~lib/string/String.__gt + (i32.const 8) + (i32.const 468) + ) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 48) + (i32.const 88) (i32.const 0) ) (unreachable) @@ -6398,7 +6523,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 48) - (i32.const 80) + (i32.const 89) (i32.const 0) ) (unreachable) @@ -6417,7 +6542,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 48) - (i32.const 81) + (i32.const 90) (i32.const 0) ) (unreachable) @@ -6434,7 +6559,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 48) - (i32.const 82) + (i32.const 91) (i32.const 0) ) (unreachable) @@ -6451,7 +6576,39 @@ (call $~lib/env/abort (i32.const 0) (i32.const 48) - (i32.const 83) + (i32.const 92) + (i32.const 0) + ) + (unreachable) + ) + ) + (set_global $std/string/a + (call $~lib/string/String.fromCodePoint + (i32.const 65377) + ) + ) + (set_global $std/string/b + (call $~lib/string/String.__concat + (call $~lib/string/String.fromCodePoint + (i32.const 55296) + ) + (call $~lib/string/String.fromCodePoint + (i32.const 56322) + ) + ) + ) + (if + (i32.eqz + (call $~lib/string/String.__gt + (get_global $std/string/a) + (get_global $std/string/b) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 48) + (i32.const 96) (i32.const 0) ) (unreachable) @@ -6461,7 +6618,7 @@ (i32.eqz (i32.eq (i32.load - (i32.const 456) + (i32.const 480) ) (i32.const 3) ) @@ -6470,7 +6627,7 @@ (call $~lib/env/abort (i32.const 0) (i32.const 48) - (i32.const 85) + (i32.const 98) (i32.const 0) ) (unreachable) @@ -6486,242 +6643,6 @@ (i32.const 8) ) ) - (block - (call $~lib/env/abort - (i32.const 0) - (i32.const 48) - (i32.const 87) - (i32.const 0) - ) - (unreachable) - ) - ) - (if - (i32.eqz - (call $~lib/string/String.__eq - (call $~lib/string/String#repeat - (i32.const 352) - (i32.const 0) - ) - (i32.const 8) - ) - ) - (block - (call $~lib/env/abort - (i32.const 0) - (i32.const 48) - (i32.const 88) - (i32.const 0) - ) - (unreachable) - ) - ) - (if - (i32.eqz - (call $~lib/string/String.__eq - (call $~lib/string/String#repeat - (i32.const 352) - (i32.const 1) - ) - (i32.const 352) - ) - ) - (block - (call $~lib/env/abort - (i32.const 0) - (i32.const 48) - (i32.const 89) - (i32.const 0) - ) - (unreachable) - ) - ) - (if - (i32.eqz - (call $~lib/string/String.__eq - (call $~lib/string/String#repeat - (i32.const 352) - (i32.const 2) - ) - (i32.const 436) - ) - ) - (block - (call $~lib/env/abort - (i32.const 0) - (i32.const 48) - (i32.const 90) - (i32.const 0) - ) - (unreachable) - ) - ) - (if - (i32.eqz - (call $~lib/string/String.__eq - (call $~lib/string/String#repeat - (i32.const 352) - (i32.const 3) - ) - (i32.const 468) - ) - ) - (block - (call $~lib/env/abort - (i32.const 0) - (i32.const 48) - (i32.const 91) - (i32.const 0) - ) - (unreachable) - ) - ) - (if - (i32.eqz - (call $~lib/string/String.__eq - (call $~lib/string/String#repeat - (i32.const 420) - (i32.const 4) - ) - (i32.const 480) - ) - ) - (block - (call $~lib/env/abort - (i32.const 0) - (i32.const 48) - (i32.const 92) - (i32.const 0) - ) - (unreachable) - ) - ) - (if - (i32.eqz - (call $~lib/string/String.__eq - (call $~lib/string/String#repeat - (i32.const 352) - (i32.const 5) - ) - (i32.const 500) - ) - ) - (block - (call $~lib/env/abort - (i32.const 0) - (i32.const 48) - (i32.const 93) - (i32.const 0) - ) - (unreachable) - ) - ) - (if - (i32.eqz - (call $~lib/string/String.__eq - (call $~lib/string/String#repeat - (i32.const 352) - (i32.const 6) - ) - (i32.const 516) - ) - ) - (block - (call $~lib/env/abort - (i32.const 0) - (i32.const 48) - (i32.const 94) - (i32.const 0) - ) - (unreachable) - ) - ) - (if - (i32.eqz - (call $~lib/string/String.__eq - (call $~lib/string/String#repeat - (i32.const 352) - (i32.const 7) - ) - (i32.const 532) - ) - ) - (block - (call $~lib/env/abort - (i32.const 0) - (i32.const 48) - (i32.const 95) - (i32.const 0) - ) - (unreachable) - ) - ) - (if - (i32.eqz - (call $~lib/string/String.__eq - (call $~lib/internal/itoa/itoa32 - (i32.const 0) - ) - (i32.const 204) - ) - ) - (block - (call $~lib/env/abort - (i32.const 0) - (i32.const 48) - (i32.const 97) - (i32.const 0) - ) - (unreachable) - ) - ) - (if - (i32.eqz - (call $~lib/string/String.__eq - (call $~lib/internal/itoa/itoa32 - (i32.const 1) - ) - (i32.const 212) - ) - ) - (block - (call $~lib/env/abort - (i32.const 0) - (i32.const 48) - (i32.const 98) - (i32.const 0) - ) - (unreachable) - ) - ) - (if - (i32.eqz - (call $~lib/string/String.__eq - (call $~lib/internal/itoa/itoa32 - (i32.const 8) - ) - (i32.const 1144) - ) - ) - (block - (call $~lib/env/abort - (i32.const 0) - (i32.const 48) - (i32.const 99) - (i32.const 0) - ) - (unreachable) - ) - ) - (if - (i32.eqz - (call $~lib/string/String.__eq - (call $~lib/internal/itoa/itoa32 - (i32.const 123) - ) - (i32.const 456) - ) - ) (block (call $~lib/env/abort (i32.const 0) @@ -6735,10 +6656,11 @@ (if (i32.eqz (call $~lib/string/String.__eq - (call $~lib/internal/itoa/itoa32 - (i32.const -1000) + (call $~lib/string/String#repeat + (i32.const 428) + (i32.const 0) ) - (i32.const 1152) + (i32.const 8) ) ) (block @@ -6754,10 +6676,11 @@ (if (i32.eqz (call $~lib/string/String.__eq - (call $~lib/internal/itoa/itoa32 - (i32.const 1234) + (call $~lib/string/String#repeat + (i32.const 428) + (i32.const 1) ) - (i32.const 1168) + (i32.const 428) ) ) (block @@ -6773,10 +6696,11 @@ (if (i32.eqz (call $~lib/string/String.__eq - (call $~lib/internal/itoa/itoa32 - (i32.const 12345) + (call $~lib/string/String#repeat + (i32.const 428) + (i32.const 2) ) - (i32.const 1180) + (i32.const 460) ) ) (block @@ -6792,10 +6716,11 @@ (if (i32.eqz (call $~lib/string/String.__eq - (call $~lib/internal/itoa/itoa32 - (i32.const 123456) + (call $~lib/string/String#repeat + (i32.const 428) + (i32.const 3) ) - (i32.const 1196) + (i32.const 492) ) ) (block @@ -6811,10 +6736,11 @@ (if (i32.eqz (call $~lib/string/String.__eq - (call $~lib/internal/itoa/itoa32 - (i32.const 1111111) + (call $~lib/string/String#repeat + (i32.const 444) + (i32.const 4) ) - (i32.const 1212) + (i32.const 504) ) ) (block @@ -6830,10 +6756,11 @@ (if (i32.eqz (call $~lib/string/String.__eq - (call $~lib/internal/itoa/itoa32 - (i32.const 1234567) + (call $~lib/string/String#repeat + (i32.const 428) + (i32.const 5) ) - (i32.const 1232) + (i32.const 524) ) ) (block @@ -6849,10 +6776,11 @@ (if (i32.eqz (call $~lib/string/String.__eq - (call $~lib/internal/itoa/itoa32 - (i32.const 2147483646) + (call $~lib/string/String#repeat + (i32.const 428) + (i32.const 6) ) - (i32.const 1252) + (i32.const 540) ) ) (block @@ -6868,10 +6796,11 @@ (if (i32.eqz (call $~lib/string/String.__eq - (call $~lib/internal/itoa/itoa32 - (i32.const 2147483647) + (call $~lib/string/String#repeat + (i32.const 428) + (i32.const 7) ) - (i32.const 1276) + (i32.const 556) ) ) (block @@ -6888,28 +6817,9 @@ (i32.eqz (call $~lib/string/String.__eq (call $~lib/internal/itoa/itoa32 - (i32.const -2147483648) + (i32.const 0) ) - (i32.const 1300) - ) - ) - (block - (call $~lib/env/abort - (i32.const 0) - (i32.const 48) - (i32.const 109) - (i32.const 0) - ) - (unreachable) - ) - ) - (if - (i32.eqz - (call $~lib/string/String.__eq - (call $~lib/internal/itoa/itoa32 - (i32.const -1) - ) - (i32.const 1328) + (i32.const 280) ) ) (block @@ -6925,10 +6835,29 @@ (if (i32.eqz (call $~lib/string/String.__eq - (call $~lib/internal/itoa/utoa32 - (i32.const 0) + (call $~lib/internal/itoa/itoa32 + (i32.const 1) ) - (i32.const 204) + (i32.const 288) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 48) + (i32.const 111) + (i32.const 0) + ) + (unreachable) + ) + ) + (if + (i32.eqz + (call $~lib/string/String.__eq + (call $~lib/internal/itoa/itoa32 + (i32.const 8) + ) + (i32.const 1168) ) ) (block @@ -6944,10 +6873,10 @@ (if (i32.eqz (call $~lib/string/String.__eq - (call $~lib/internal/itoa/utoa32 - (i32.const 1000) + (call $~lib/internal/itoa/itoa32 + (i32.const 123) ) - (i32.const 1336) + (i32.const 480) ) ) (block @@ -6963,10 +6892,10 @@ (if (i32.eqz (call $~lib/string/String.__eq - (call $~lib/internal/itoa/utoa32 - (i32.const 2147483647) + (call $~lib/internal/itoa/itoa32 + (i32.const -1000) ) - (i32.const 1276) + (i32.const 1176) ) ) (block @@ -6982,10 +6911,10 @@ (if (i32.eqz (call $~lib/string/String.__eq - (call $~lib/internal/itoa/utoa32 - (i32.const -2147483648) + (call $~lib/internal/itoa/itoa32 + (i32.const 1234) ) - (i32.const 1348) + (i32.const 1192) ) ) (block @@ -7001,10 +6930,10 @@ (if (i32.eqz (call $~lib/string/String.__eq - (call $~lib/internal/itoa/utoa32 - (get_global $~lib/builtins/u32.MAX_VALUE) + (call $~lib/internal/itoa/itoa32 + (i32.const 12345) ) - (i32.const 1372) + (i32.const 1204) ) ) (block @@ -7020,10 +6949,29 @@ (if (i32.eqz (call $~lib/string/String.__eq - (call $~lib/internal/itoa/utoa64 - (i64.const 0) + (call $~lib/internal/itoa/itoa32 + (i32.const 123456) ) - (i32.const 204) + (i32.const 1220) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 48) + (i32.const 117) + (i32.const 0) + ) + (unreachable) + ) + ) + (if + (i32.eqz + (call $~lib/string/String.__eq + (call $~lib/internal/itoa/itoa32 + (i32.const 1111111) + ) + (i32.const 1236) ) ) (block @@ -7039,10 +6987,10 @@ (if (i32.eqz (call $~lib/string/String.__eq - (call $~lib/internal/itoa/utoa64 - (i64.const 1234) + (call $~lib/internal/itoa/itoa32 + (i32.const 1234567) ) - (i32.const 1168) + (i32.const 1256) ) ) (block @@ -7058,10 +7006,10 @@ (if (i32.eqz (call $~lib/string/String.__eq - (call $~lib/internal/itoa/utoa64 - (i64.const 99999999) + (call $~lib/internal/itoa/itoa32 + (i32.const 2147483646) ) - (i32.const 1992) + (i32.const 1276) ) ) (block @@ -7077,10 +7025,10 @@ (if (i32.eqz (call $~lib/string/String.__eq - (call $~lib/internal/itoa/utoa64 - (i64.const 100000000) + (call $~lib/internal/itoa/itoa32 + (i32.const 2147483647) ) - (i32.const 2012) + (i32.const 1300) ) ) (block @@ -7096,10 +7044,10 @@ (if (i32.eqz (call $~lib/string/String.__eq - (call $~lib/internal/itoa/utoa64 - (i64.const 4294967295) + (call $~lib/internal/itoa/itoa32 + (i32.const -2147483648) ) - (i32.const 1372) + (i32.const 1324) ) ) (block @@ -7115,10 +7063,10 @@ (if (i32.eqz (call $~lib/string/String.__eq - (call $~lib/internal/itoa/utoa64 - (i64.const 68719476735) + (call $~lib/internal/itoa/itoa32 + (i32.const -1) ) - (i32.const 2036) + (i32.const 1352) ) ) (block @@ -7134,29 +7082,10 @@ (if (i32.eqz (call $~lib/string/String.__eq - (call $~lib/internal/itoa/utoa64 - (i64.const 868719476735) + (call $~lib/internal/itoa/utoa32 + (i32.const 0) ) - (i32.const 2064) - ) - ) - (block - (call $~lib/env/abort - (i32.const 0) - (i32.const 48) - (i32.const 124) - (i32.const 0) - ) - (unreachable) - ) - ) - (if - (i32.eqz - (call $~lib/string/String.__eq - (call $~lib/internal/itoa/utoa64 - (i64.const 999868719476735) - ) - (i32.const 2092) + (i32.const 280) ) ) (block @@ -7172,10 +7101,10 @@ (if (i32.eqz (call $~lib/string/String.__eq - (call $~lib/internal/itoa/utoa64 - (i64.const 9999868719476735) + (call $~lib/internal/itoa/utoa32 + (i32.const 1000) ) - (i32.const 2128) + (i32.const 1360) ) ) (block @@ -7191,10 +7120,10 @@ (if (i32.eqz (call $~lib/string/String.__eq - (call $~lib/internal/itoa/utoa64 - (i64.const 19999868719476735) + (call $~lib/internal/itoa/utoa32 + (i32.const 2147483647) ) - (i32.const 2164) + (i32.const 1300) ) ) (block @@ -7210,10 +7139,10 @@ (if (i32.eqz (call $~lib/string/String.__eq - (call $~lib/internal/itoa/utoa64 - (get_global $~lib/builtins/u64.MAX_VALUE) + (call $~lib/internal/itoa/utoa32 + (i32.const -2147483648) ) - (i32.const 2204) + (i32.const 1372) ) ) (block @@ -7229,17 +7158,17 @@ (if (i32.eqz (call $~lib/string/String.__eq - (call $~lib/internal/itoa/itoa64 - (i64.const 0) + (call $~lib/internal/itoa/utoa32 + (get_global $~lib/builtins/u32.MAX_VALUE) ) - (i32.const 204) + (i32.const 1396) ) ) (block (call $~lib/env/abort (i32.const 0) (i32.const 48) - (i32.const 130) + (i32.const 129) (i32.const 0) ) (unreachable) @@ -7248,10 +7177,10 @@ (if (i32.eqz (call $~lib/string/String.__eq - (call $~lib/internal/itoa/itoa64 - (i64.const -1234) + (call $~lib/internal/itoa/utoa64 + (i64.const 0) ) - (i32.const 2248) + (i32.const 280) ) ) (block @@ -7267,10 +7196,10 @@ (if (i32.eqz (call $~lib/string/String.__eq - (call $~lib/internal/itoa/itoa64 - (i64.const 4294967295) + (call $~lib/internal/itoa/utoa64 + (i64.const 1234) ) - (i32.const 1372) + (i32.const 1192) ) ) (block @@ -7286,10 +7215,10 @@ (if (i32.eqz (call $~lib/string/String.__eq - (call $~lib/internal/itoa/itoa64 - (i64.const -4294967295) + (call $~lib/internal/itoa/utoa64 + (i64.const 99999999) ) - (i32.const 2264) + (i32.const 2016) ) ) (block @@ -7305,8 +7234,8 @@ (if (i32.eqz (call $~lib/string/String.__eq - (call $~lib/internal/itoa/itoa64 - (i64.const 68719476735) + (call $~lib/internal/itoa/utoa64 + (i64.const 100000000) ) (i32.const 2036) ) @@ -7324,10 +7253,10 @@ (if (i32.eqz (call $~lib/string/String.__eq - (call $~lib/internal/itoa/itoa64 - (i64.const -68719476735) + (call $~lib/internal/itoa/utoa64 + (i64.const 4294967295) ) - (i32.const 2292) + (i32.const 1396) ) ) (block @@ -7343,10 +7272,10 @@ (if (i32.eqz (call $~lib/string/String.__eq - (call $~lib/internal/itoa/itoa64 - (i64.const -868719476735) + (call $~lib/internal/itoa/utoa64 + (i64.const 68719476735) ) - (i32.const 2320) + (i32.const 2060) ) ) (block @@ -7362,10 +7291,10 @@ (if (i32.eqz (call $~lib/string/String.__eq - (call $~lib/internal/itoa/itoa64 - (i64.const -999868719476735) + (call $~lib/internal/itoa/utoa64 + (i64.const 868719476735) ) - (i32.const 2352) + (i32.const 2088) ) ) (block @@ -7381,10 +7310,10 @@ (if (i32.eqz (call $~lib/string/String.__eq - (call $~lib/internal/itoa/itoa64 - (i64.const -19999868719476735) + (call $~lib/internal/itoa/utoa64 + (i64.const 999868719476735) ) - (i32.const 2388) + (i32.const 2116) ) ) (block @@ -7400,10 +7329,10 @@ (if (i32.eqz (call $~lib/string/String.__eq - (call $~lib/internal/itoa/itoa64 - (get_global $~lib/builtins/i64.MAX_VALUE) + (call $~lib/internal/itoa/utoa64 + (i64.const 9999868719476735) ) - (i32.const 2428) + (i32.const 2152) ) ) (block @@ -7419,10 +7348,10 @@ (if (i32.eqz (call $~lib/string/String.__eq - (call $~lib/internal/itoa/itoa64 - (get_global $~lib/builtins/i64.MIN_VALUE) + (call $~lib/internal/itoa/utoa64 + (i64.const 19999868719476735) ) - (i32.const 2472) + (i32.const 2188) ) ) (block @@ -7435,5 +7364,233 @@ (unreachable) ) ) + (if + (i32.eqz + (call $~lib/string/String.__eq + (call $~lib/internal/itoa/utoa64 + (get_global $~lib/builtins/u64.MAX_VALUE) + ) + (i32.const 2228) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 48) + (i32.const 141) + (i32.const 0) + ) + (unreachable) + ) + ) + (if + (i32.eqz + (call $~lib/string/String.__eq + (call $~lib/internal/itoa/itoa64 + (i64.const 0) + ) + (i32.const 280) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 48) + (i32.const 143) + (i32.const 0) + ) + (unreachable) + ) + ) + (if + (i32.eqz + (call $~lib/string/String.__eq + (call $~lib/internal/itoa/itoa64 + (i64.const -1234) + ) + (i32.const 2272) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 48) + (i32.const 144) + (i32.const 0) + ) + (unreachable) + ) + ) + (if + (i32.eqz + (call $~lib/string/String.__eq + (call $~lib/internal/itoa/itoa64 + (i64.const 4294967295) + ) + (i32.const 1396) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 48) + (i32.const 145) + (i32.const 0) + ) + (unreachable) + ) + ) + (if + (i32.eqz + (call $~lib/string/String.__eq + (call $~lib/internal/itoa/itoa64 + (i64.const -4294967295) + ) + (i32.const 2288) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 48) + (i32.const 146) + (i32.const 0) + ) + (unreachable) + ) + ) + (if + (i32.eqz + (call $~lib/string/String.__eq + (call $~lib/internal/itoa/itoa64 + (i64.const 68719476735) + ) + (i32.const 2060) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 48) + (i32.const 147) + (i32.const 0) + ) + (unreachable) + ) + ) + (if + (i32.eqz + (call $~lib/string/String.__eq + (call $~lib/internal/itoa/itoa64 + (i64.const -68719476735) + ) + (i32.const 2316) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 48) + (i32.const 148) + (i32.const 0) + ) + (unreachable) + ) + ) + (if + (i32.eqz + (call $~lib/string/String.__eq + (call $~lib/internal/itoa/itoa64 + (i64.const -868719476735) + ) + (i32.const 2344) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 48) + (i32.const 149) + (i32.const 0) + ) + (unreachable) + ) + ) + (if + (i32.eqz + (call $~lib/string/String.__eq + (call $~lib/internal/itoa/itoa64 + (i64.const -999868719476735) + ) + (i32.const 2376) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 48) + (i32.const 150) + (i32.const 0) + ) + (unreachable) + ) + ) + (if + (i32.eqz + (call $~lib/string/String.__eq + (call $~lib/internal/itoa/itoa64 + (i64.const -19999868719476735) + ) + (i32.const 2412) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 48) + (i32.const 151) + (i32.const 0) + ) + (unreachable) + ) + ) + (if + (i32.eqz + (call $~lib/string/String.__eq + (call $~lib/internal/itoa/itoa64 + (get_global $~lib/builtins/i64.MAX_VALUE) + ) + (i32.const 2452) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 48) + (i32.const 152) + (i32.const 0) + ) + (unreachable) + ) + ) + (if + (i32.eqz + (call $~lib/string/String.__eq + (call $~lib/internal/itoa/itoa64 + (get_global $~lib/builtins/i64.MIN_VALUE) + ) + (i32.const 2496) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 48) + (i32.const 153) + (i32.const 0) + ) + (unreachable) + ) + ) ) ) diff --git a/tests/compiler/std/symbol.optimized.wat b/tests/compiler/std/symbol.optimized.wat index 13d23005..5c02d34f 100644 --- a/tests/compiler/std/symbol.optimized.wat +++ b/tests/compiler/std/symbol.optimized.wat @@ -679,38 +679,26 @@ ) (get_local $2) ) - (func $~lib/memory/memcmp (; 12 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/internal/string/compareUTF16 (; 12 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) - (if - (i32.eq - (get_local $0) - (get_local $1) - ) - (return - (i32.const 0) - ) - ) (loop $continue|0 (if - (tee_local $3 - (i32.ne - (get_local $2) - (i32.const 0) - ) - ) - (set_local $3 - (i32.eq - (i32.load8_u - (get_local $0) - ) - (i32.load8_u - (get_local $1) + (if (result i32) + (get_local $2) + (i32.eqz + (tee_local $3 + (i32.sub + (i32.load16_u offset=4 + (get_local $0) + ) + (i32.load16_u offset=4 + (get_local $1) + ) + ) ) ) + (get_local $2) ) - ) - (if - (get_local $3) (block (set_local $2 (i32.sub @@ -734,29 +722,9 @@ ) ) ) - (tee_local $0 - (if (result i32) - (get_local $2) - (i32.sub - (i32.load8_u - (get_local $0) - ) - (i32.load8_u - (get_local $1) - ) - ) - (i32.const 0) - ) - ) + (get_local $3) ) - (func $~lib/memory/memory.compare (; 13 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (call $~lib/memory/memcmp - (get_local $0) - (get_local $1) - (get_local $2) - ) - ) - (func $~lib/string/String.__eq (; 14 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__eq (; 13 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (if (i32.eq @@ -803,23 +771,14 @@ ) ) (i32.eqz - (call $~lib/memory/memory.compare - (i32.add - (get_local $0) - (i32.const 4) - ) - (i32.add - (get_local $1) - (i32.const 4) - ) - (i32.shl - (get_local $2) - (i32.const 1) - ) + (call $~lib/internal/string/compareUTF16 + (get_local $0) + (get_local $1) + (get_local $2) ) ) ) - (func $~lib/map/Map#find (; 15 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/map/Map#find (; 14 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (set_local $2 (i32.load offset=8 (i32.add @@ -882,7 +841,7 @@ ) (i32.const 0) ) - (func $~lib/map/Map#has (; 16 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#has (; 15 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) (i32.ne (call $~lib/map/Map#find (get_local $0) @@ -894,7 +853,7 @@ (i32.const 0) ) ) - (func $~lib/map/Map#get (; 17 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#get (; 16 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) (tee_local $0 (if (result i32) (tee_local $0 @@ -913,7 +872,7 @@ ) ) ) - (func $~lib/map/Map#rehash (; 18 ;) (type $iiv) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 17 ;) (type $iiv) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -1076,7 +1035,7 @@ ) ) ) - (func $~lib/map/Map#set (; 19 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/map/Map#set (; 18 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -1213,7 +1172,7 @@ ) ) ) - (func $~lib/internal/hash/hash32 (; 20 ;) (type $ii) (param $0 i32) (result i32) + (func $~lib/internal/hash/hash32 (; 19 ;) (type $ii) (param $0 i32) (result i32) (i32.mul (i32.xor (i32.mul @@ -1258,7 +1217,7 @@ (i32.const 16777619) ) ) - (func $~lib/map/Map#find (; 21 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/map/Map#find (; 20 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (set_local $2 (i32.load offset=8 (i32.add @@ -1321,7 +1280,7 @@ ) (i32.const 0) ) - (func $~lib/map/Map#rehash (; 22 ;) (type $iiv) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 21 ;) (type $iiv) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -1484,7 +1443,7 @@ ) ) ) - (func $~lib/map/Map#set (; 23 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/map/Map#set (; 22 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -1621,7 +1580,7 @@ ) ) ) - (func $~lib/symbol/Symbol.for (; 24 ;) (type $ii) (param $0 i32) (result i32) + (func $~lib/symbol/Symbol.for (; 23 ;) (type $ii) (param $0 i32) (result i32) (local $1 i32) (if (get_global $~lib/symbol/stringToId) @@ -1676,7 +1635,7 @@ ) (get_local $1) ) - (func $~lib/map/Map#has (; 25 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#has (; 24 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) (i32.ne (call $~lib/map/Map#find (get_local $0) @@ -1688,7 +1647,7 @@ (i32.const 0) ) ) - (func $~lib/map/Map#get (; 26 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#get (; 25 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) (tee_local $0 (if (result i32) (tee_local $0 @@ -1707,7 +1666,7 @@ ) ) ) - (func $~lib/symbol/Symbol.keyFor (; 27 ;) (type $ii) (param $0 i32) (result i32) + (func $~lib/symbol/Symbol.keyFor (; 26 ;) (type $ii) (param $0 i32) (result i32) (local $1 i32) (if (tee_local $1 @@ -1734,7 +1693,7 @@ ) ) ) - (func $start (; 28 ;) (type $v) + (func $start (; 27 ;) (type $v) (set_global $~lib/allocator/arena/startOffset (i32.const 160) ) diff --git a/tests/compiler/std/symbol.untouched.wat b/tests/compiler/std/symbol.untouched.wat index c380155a..b0bc0b85 100644 --- a/tests/compiler/std/symbol.untouched.wat +++ b/tests/compiler/std/symbol.untouched.wat @@ -854,36 +854,29 @@ ) (get_local $1) ) - (func $~lib/memory/memcmp (; 14 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/internal/string/compareUTF16 (; 14 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) - (if - (i32.eq - (get_local $0) - (get_local $1) - ) - (return - (i32.const 0) - ) + (set_local $3 + (i32.const 0) ) (block $break|0 (loop $continue|0 (if (if (result i32) - (tee_local $3 - (i32.ne - (get_local $2) - (i32.const 0) + (get_local $2) + (i32.eqz + (tee_local $3 + (i32.sub + (i32.load16_u offset=4 + (get_local $0) + ) + (i32.load16_u offset=4 + (get_local $1) + ) + ) ) ) - (i32.eq - (i32.load8_u - (get_local $0) - ) - (i32.load8_u - (get_local $1) - ) - ) - (get_local $3) + (get_local $2) ) (block (block @@ -911,27 +904,9 @@ ) ) ) - (if (result i32) - (get_local $2) - (i32.sub - (i32.load8_u - (get_local $0) - ) - (i32.load8_u - (get_local $1) - ) - ) - (i32.const 0) - ) + (get_local $3) ) - (func $~lib/memory/memory.compare (; 15 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (call $~lib/memory/memcmp - (get_local $0) - (get_local $1) - (get_local $2) - ) - ) - (func $~lib/string/String.__eq (; 16 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__eq (; 15 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (if @@ -978,23 +953,14 @@ ) ) (i32.eqz - (call $~lib/memory/memory.compare - (i32.add - (get_local $0) - (get_global $~lib/internal/string/HEADER_SIZE) - ) - (i32.add - (get_local $1) - (get_global $~lib/internal/string/HEADER_SIZE) - ) - (i32.shl - (get_local $3) - (i32.const 1) - ) + (call $~lib/internal/string/compareUTF16 + (get_local $0) + (get_local $1) + (get_local $3) ) ) ) - (func $~lib/map/Map#find (; 17 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/map/Map#find (; 16 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (set_local $3 @@ -1064,7 +1030,7 @@ ) (i32.const 0) ) - (func $~lib/map/Map#has (; 18 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#has (; 17 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) (i32.ne (call $~lib/map/Map#find (get_local $0) @@ -1080,7 +1046,7 @@ (i32.const 0) ) ) - (func $~lib/map/Map#get (; 19 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#get (; 18 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (set_local $2 (call $~lib/map/Map#find @@ -1103,7 +1069,7 @@ (unreachable) ) ) - (func $~lib/map/Map#rehash (; 20 ;) (type $iiv) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 19 ;) (type $iiv) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -1300,7 +1266,7 @@ ) ) ) - (func $~lib/map/Map#set (; 21 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/map/Map#set (; 20 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -1449,7 +1415,7 @@ ) ) ) - (func $~lib/internal/hash/hash32 (; 22 ;) (type $ii) (param $0 i32) (result i32) + (func $~lib/internal/hash/hash32 (; 21 ;) (type $ii) (param $0 i32) (result i32) (local $1 i32) (set_local $1 (get_global $~lib/internal/hash/FNV_OFFSET) @@ -1510,7 +1476,7 @@ ) (get_local $1) ) - (func $~lib/map/Map#find (; 23 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/map/Map#find (; 22 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (set_local $3 @@ -1580,7 +1546,7 @@ ) (i32.const 0) ) - (func $~lib/map/Map#rehash (; 24 ;) (type $iiv) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 23 ;) (type $iiv) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -1777,7 +1743,7 @@ ) ) ) - (func $~lib/map/Map#set (; 25 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/map/Map#set (; 24 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -1926,7 +1892,7 @@ ) ) ) - (func $~lib/symbol/Symbol.for (; 26 ;) (type $ii) (param $0 i32) (result i32) + (func $~lib/symbol/Symbol.for (; 25 ;) (type $ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (if @@ -1990,7 +1956,7 @@ ) (get_local $2) ) - (func $~lib/map/Map#has (; 27 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#has (; 26 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) (i32.ne (call $~lib/map/Map#find (get_local $0) @@ -2006,7 +1972,7 @@ (i32.const 0) ) ) - (func $~lib/map/Map#get (; 28 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#get (; 27 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (set_local $2 (call $~lib/map/Map#find @@ -2029,7 +1995,7 @@ (unreachable) ) ) - (func $~lib/symbol/Symbol.keyFor (; 29 ;) (type $ii) (param $0 i32) (result i32) + (func $~lib/symbol/Symbol.keyFor (; 28 ;) (type $ii) (param $0 i32) (result i32) (local $1 i32) (if (result i32) (if (result i32) @@ -2052,7 +2018,7 @@ (i32.const 0) ) ) - (func $start (; 30 ;) (type $v) + (func $start (; 29 ;) (type $v) (set_global $~lib/allocator/arena/startOffset (i32.and (i32.add